2009-07-09 8 views
2

ich einen RSA pubkey.dat bekam (fast auf der Hand, was es ist), die die folgende Struktur auf Inhalt hat:RSA pubkey Dateityperkennung

  • ASN1 Integer von rund 1024 Bit (Modulus)
  • ASN1 Integer (Exponent)
  • Blob von 256 Byte (Signature)

Keine Tags wie "---- beginnen ---" oder so. reine hex Werte in ihm.

Es gibt eine Möglichkeit, sein Format zu identifizieren, als ob es DER/PEM/etc ist, also kann ich es mit Python Crypto Libraries oder Crypto ++ auf C++ öffnen?

(oder wenn es übereinstimmt einen öffentlichen Namen Standardstruktur für mich zu überprüfen)

Scheint, wie seine nicht PEM als M2crypt kann es nicht laden.

Vielen Dank im Voraus.

Antwort

2

PEM-Codierung hat obligatorisches Format:

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

wo für öffentliche Schlüssel, typename = "PUBLIC KEY" (AFAIR) so, das ist sehr einfach, mit einem regulären Ausdruck zu prüfen, wie die folgenden:

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

Wenn es nicht PEM ist, ist es normalerweise einfach DER.

Die DER-Darstellung einer ASN.1 SEQUENCE beginnt immer mit 0x30, also normalerweise, wenn ich einen DER-oder-PEM-Stream decodieren muss, von dem ich sicher weiß, dass es eine ASN.1-SEQUENZ ist (komplexeste Werte sind sowieso SEQUENZEN)) Ich überprüfe das erste Byte: Wenn es 0x30 ist, dekodiere ich als DER, ansonsten dekodiere ich als PEM.

Sie können Ihre ASN.1 Daten schnell überprüfen mit my very own opensource ASN.1 parser (es ist alles clientseitige Javascript, damit ich Ihre Daten nicht sehen).