Question

J'ai un pubkey.dat RSA (ce que c'est presque évident) qui a la structure de contenu suivante :

  • ASN1 Entier d'environ 1024 bits (Module)
  • ASN1 Entier (Exposant)
  • Blob de 256 octets (Signature)

Pas de balises comme "----begin---" ou autre.des valeurs hexadécimales pures.

Il existe un moyen d'identifier son format, comme s'il s'agit de DER/PEM/etc , afin que je puisse l'ouvrir avec des bibliothèques de chiffrement python ou crypto++ sur c++ ?

(Ou s'il correspond à un nom de structure standard public que je dois vérifier)

On dirait que ce n'est pas PEM car M2crypt ne peut pas le charger.

Merci d'avance.

Était-ce utile?

La solution

L'encodage PEM a un format obligatoire :

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

où, pour les clés publiques, tapezName="PUBLIC KEY" (AFAIR), ce qui est très facile à vérifier avec une expression régulière telle que la suivante :

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

Si ce n'est pas du PEM, c'est généralement du simple DER.

La représentation DER d'une SÉQUENCE ASN.1 commence toujours par 0x30, donc généralement, lorsque je dois décoder un flux DER-ou-PEM dont je sais avec certitude qu'il s'agit d'une SÉQUENCE ASN.1 (les valeurs les plus complexes sont des SÉQUENCES, de toute façon), je vérifie le premier octet :si c'est 0x30, je décode en DER, sinon je décode en PEM.

Vous pouvez vérifier rapidement vos données ASN.1 en utilisant mon propre analyseur ASN.1 open source (tout est Javascript côté client, donc je ne verrai pas vos données).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top