detecção de tipo de arquivo RSA pubkey
-
12-09-2019 - |
Pergunta
Eu tenho um pubkey.dat RSA (quase óbvio o que é) que tem a seguinte estrutura de conteúdo:
- ASN1 Integer de cerca de 1024 bits (módulo)
- ASN1 Integer (Expoente)
- Blob de 256 bytes (Assinatura)
Nenhuma tag como "---- começar ---" ou assim. valores hexadecimais puros nele.
Há alguma maneira de identificar o seu formato como se do DER / PEM / etc, para que eu possa abri-lo com bibliotecas python de criptografia ou criptografia ++ em c ++?
(ou se ele corresponde a um nome de estrutura padrão público para mim para verificar)
Parece que a sua não PEM como M2crypt não pode carregá-lo.
Agradecemos antecipadamente.
Solução
PEM-codificação tem formato obrigatório:
-----BEGIN typeName-----
base64 of DER value
-----END typeName-----
onde, por chaves públicas, typeName = "PUBLIC KEY" (AFAIR) de modo que é muito fácil de verificar com uma expressão regular, como o seguinte:
/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/
Se não é PEM, é geralmente DER simples.
A representação DER de uma seqüência ASN.1 sempre começa com 0x30 então normalmente quando eu tenho para decodificar um fluxo DER-ou-PEM que eu sei com certeza que é uma seqüência de ASN.1 (valores mais complexos são sequências, de qualquer maneira) Eu verifico o primeiro byte: se o de 0x30, eu decodificar como DER, eu decodificar outra coisa como PEM
.Você pode verificar seus dados ASN.1 rapidamente usando meu próprio analisador opensource ASN.1 (é tudo Javascript, por isso não vou ver os seus dados). do lado do cliente