قراءة ASN.1 DER المشفر مفتاح RSA
-
16-09-2019 - |
سؤال
أنا أكتب تطبيقا للحصول على فهم أفضل ل DKIM. يقول المواصفات إنني أسترجع مفتاح عام "ASN.1 der المشفر" من سجل TXT. أستطيع أن أرى المفتاح على "s1024._domainkey.yahoo.com" = "migfma0gcsqgsib3dqebaaa4gnadcbiqkbgqdreee0Ri4juz + QFIWYUI / E9UGSXAU / 2P8LJNTD8V4UNN + 2FAZVGE3KL23BZEOLEV4PELEB3GFM".
كيف يمكنني استخدام هذا المفتاح من .NET؟ الأمثلة التي رأيتها تحصل على المفتاح من X509Certificate2، أو ملف XML الذي يحتوي على rsaparameters.
تصحيح: أقوم بنسخ / لصق المفتاح أعلاه من أداة Network-Tools.com DNS، والتي يجب أن تقطعها قصيرة. nslookup يعطيني المفتاح الكامل:
s1024._domainkey.yahoo.com النص = "ك = آر إس إيه؛ ر = ذ؛ ع = MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz + QfiWYui / E9UGSXau2P8LjnTD8V4Unn + 2FAZVGE3kL23bzeoULYv4PeleB3gfm" "JiDJOKU3Ns5L4KJAUUHjFwDebt0NP + sBK0VKeTATL2Yr / S3bTxhy + 1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj + XcwIDAQAB، ن = مفتاح قليلا A 1024"؛
لذلك كان Abelenky على المسار الصحيح مع Base64 ..
المحلول
هذا هو ترميز Base64 لترميز Der-Trugkeyinfo ASN.1 الذي يحتوي على مفتاح RSA العام.
إليك ترجمة:
0 30 159: SEQUENCE {
3 30 13: SEQUENCE {
5 06 9: OBJECT IDENTIFIER '1 2 840 113549 1 1 1'
16 05 0: NULL
: }
18 03 141: BIT STRING 0 unused bits, encapsulates {
22 30 137: SEQUENCE {
25 02 129: INTEGER
: 00 EB 11 E7 B4 46 2E 09 BB 3F 90 7E 25 98 BA 2F
: C4 F5 41 92 5D AB BF D8 FF 0B 8E 74 C3 F1 5E 14
: 9E 7F B6 14 06 55 18 4D E4 2F 6D DB CD EA 14 2D
: 8B F8 3D E9 5E 07 78 1F 98 98 83 24 E2 94 DC DB
: 39 2F 82 89 01 45 07 8C 5C 03 79 BB 74 34 FF AC
: 04 AD 15 29 E4 C0 4C BD 98 AF F4 B7 6D 3F F1 87
: 2F B5 C6 D8 F8 46 47 55 ED F5 71 4E 7E 7A 2D BE
: 2E 75 49 F0 BB 12 B8 57 96 F9 3D D3 8A 8F FF 97
: 73
157 02 3: INTEGER 65537
: }
: }
: }
يشير معرف الكائن إلى أن سلسلة البت التالية تحتوي على ترميز Rsapublickey. الأعداد الصحيحة هي المعدلة والأسف العام.
يمكنك فك شفرة base64 مع تحويل .frombase64String., ، لكنني لا أعتقد أن .NET لديها وظيفة مضمنة لتحليل Searchkeyinfos، لذلك تحتاج إلى استخدام أداة حزب 3RD مثل BouncyCastle.
نصائح أخرى
لأي شخص مهتم بهذه المسألة سأقترح system.security.cryptography.x509certificates.publickey. والتي يمكن استخدامها لقراءة مفتاح عامة مشفر.
تبدو هذه السلسلة نوعا ما من ترميز الأساس 64. إذا قمت بتحويل هذه السلسلة من Base-64 إلى Blob، فينبغي بعد ذلك أن تكون بتنسيق ASN.1 صالحا.
جرب ال نطاط القلعة المكتبة، إنها توفر وظائف كبيرة لهذه الحالات.