Pregunta

Tengo una pubkey.dat RSA (casi obvio lo que es) que tiene la siguiente estructura de contenidos:

  • ASN1 número entero de alrededor de 1024 bits (módulo)
  • ASN1 entero (exponente)
  • Blob de 256 bytes (Firma)

No hay etiquetas como "---- --- comenzar" más o menos. puros valores hexadecimales en el mismo.

No hay ninguna manera de identificar su formato como si se trata de DER / PEM / etc, por lo que puedo abrirlo con bibliotecas criptográficas pitón o cripto ++ en C ++?

(O si coincide con un nombre de estructura estándar público para que lo compruebe)

Parece que no es PEM como M2crypt no puede cargarlo.

Gracias de antemano.

¿Fue útil?

Solución

PEM-codificación tiene un formato obligatorio:

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

donde, para las claves públicas, typeName = "CLAVE PÚBLICA" (AFAIR) por lo que es muy fácil de comprobar con una expresión regular, como la siguiente:

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

Si no es PEM, DER Es generalmente llana.

La representación de una secuencia DER ASN.1 siempre comienza con 0x30 por lo general cuando tengo que decodificar una corriente DER-o-PEM que sé a ciencia cierta que es una secuencia ASN.1 (valores más complejas secuencias son, de todos modos) verifico el primer byte: si es de 0x30, que decodificar como DER, más que decodificar como PEM

.

Puede comprobar sus datos ASN.1 rápidamente usando mi propio código abierto ASN.1 analizador (que es todo JavaScript en el cliente, por lo que no verá sus datos).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top