Cryptography RSA公钥文件类型检测

Cryptography RSA公钥文件类型检测,cryptography,types,key,rsa,public,Cryptography,Types,Key,Rsa,Public,我得到了一个RSA pubkey.dat(几乎显而易见),它的内容结构如下: 大约1024位的ASN1整数(模数) ASN1整数(指数) 256字节的Blob(签名) 没有像“----开始---”这样的标签。其中包含纯十六进制值 P>有任何方式来识别它的格式,就像是DR/PEM/ETC一样,所以我可以用Python加密库或C++上的密码++来打开它。 (或者如果它与我要检查的公共标准结构名称匹配) 似乎它不是PEM,因为M2crypt无法加载它 提前感谢。PEM编码具有强制格式: ----

我得到了一个RSA pubkey.dat(几乎显而易见),它的内容结构如下:

  • 大约1024位的ASN1整数(模数)
  • ASN1整数(指数)
  • 256字节的Blob(签名)
没有像“----开始---”这样的标签。其中包含纯十六进制值

<> P>有任何方式来识别它的格式,就像是DR/PEM/ETC一样,所以我可以用Python加密库或C++上的密码++来打开它。 (或者如果它与我要检查的公共标准结构名称匹配)

似乎它不是PEM,因为M2crypt无法加载它


提前感谢。

PEM编码具有强制格式:

-----BEGIN typeName-----
base64 of DER value
-----END typeName-----
其中,对于公钥,typeName=“public KEY”(AFAIR),因此很容易使用正则表达式进行检查,例如:

/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/
如果不是PEM,通常是普通的DER

ASN.1序列的DER表示总是从0x30开始,因此通常当我必须解码DER或PEM流时,我确信它是ASN.1序列(无论如何,最复杂的值是序列),我检查第一个字节:如果它是0x30,我解码为DER,否则我解码为PEM

您可以使用快速检查ASN.1数据(这都是客户端Javascript,所以我不会看到您的数据)