rilevamento RSA pubkey tipo di file
-
12-09-2019 - |
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.
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).