سؤال

حصلت على RSA PubKey.Dat (ما هو تقريبا ما هو عليه) الذي يحتوي على الهيكل التالي على المحتويات:

  • عدد صحيح من asn1 حوالي 1024 بت (معامل)
  • عدد صحيح ASN1 (الأس
  • Blob من 256 بايت (توقيع)

لا توجد علامات مثل "---- ابدأ ---" أو نحو ذلك. قيم عرافة نقية في ذلك.

هناك أي طريقة لتحديد تنسيقها مثل إذا كانت der / pem / etc، حتى أتمكن من فتحها مع مكتبات Python Crypto أو Crypto ++ على C ++؟

(أو إذا كان يطابق اسم هيكل قياسي عامي للتحقق منه)

يبدو أنه ليس pem كما M2Crypt لا يمكن تحميله.

شكرا مقدما.

هل كانت مفيدة؟

المحلول

PEM-Encoding له تنسيق إلزامي:

-----BEGIN typeName-----
base64 of DER value
-----END typeName-----

حيث، للمفاتيح العامة، TypeName = "المفتاح العام" (AFAIR) لذلك من السهل جدا التحقق من تعبير منتظم مثل ما يلي:

/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/

إذا لم يكن PEM، فمن عادة عادي دير.

يبدأ تمثيل Der Truction of ASN.1 دائما مع 0x30 عادة عادة عندما يتعين علي فك تشفير دير أو PEM الذي أعرفه بالتأكد من أنه تسلسل ASN.1 (معظم القيم المعقدة هي تسلسل، على أي حال) أتحقق من البايت الأول: إذا كان 0x30، أقوم بفك تشفير der، وإلا أفترض باسم PEM.

يمكنك التحقق من بيانات ASN.1 الخاصة بك بسرعة باستخدام بلدي apensource الخاص بي جدا asn.1 المحلل (كل شيء جافا سكريبت جانب العميل، لذلك لن أرى بياناتك).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top