Domanda

Ho una pubkey.dat RSA (quasi ovvio quello che è) che ha la seguente struttura su contenuti:

  • ASN1 intero di circa 1024 bit (Modulus)
  • ASN1 Integer (esponente)
  • blob di 256 byte (Firma)

Non ci sono tag come "---- iniziare ---" o giù di lì. valori esadecimali puri in esso.

Non c'è alcun modo di identificare il suo formato, come se si tratta di DER / PEM / etc, così posso aprirlo con le librerie Python crittografici o crypto ++ su C ++?

(o se corrisponde a un nome di struttura standard pubblico per fare il check)

Sembra che la sua non è la PEM come M2crypt non può caricarlo.

Grazie in anticipo.

È stato utile?

Soluzione

PEM-codifica ha formato obbligatorio:

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

dove, per le chiavi pubbliche, typeName = "chiave pubblica" (afair) in modo che sia molto facile da controllare con un espressione regolare come il seguente:

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

Se non è PEM, è di solito DER pianura.

La rappresentazione DER di una sequenza ASN.1 inizia sempre con 0x30 così di solito quando devo decodificare un flusso DER-o-PEM, che so per certo che è una sequenza ASN.1 (valori più complessi sono sequenze, comunque) Controllo il primo byte: se di 0x30, decodifico come DER, altrimenti decodifico come PEM

.

È possibile verificare i dati ASN.1 rapidamente utilizzando mia molto personale opensource ASN.1 parser (è tutto JavaScript lato client, quindi non mi visualizzare i dati).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top