我有一个RSA pubkey.dat(几乎是显而易见的),其内容具有以下结构:
没有像“---- begin ---”这样的标签。其中包含纯十六进制值。
有什么方法可以识别它的格式,比如它是DER / PEM /等,所以我可以用python加密库或c ++上的crypto ++打开它?
(或者,如果它与我要检查的公共标准结构名称相匹配)
似乎它不是PEM,因为M2crypt无法加载它。
提前致谢。
答案 0 :(得分:2)
PEM编码具有强制格式:
-----BEGIN typeName-----
base64 of DER value
-----END typeName-----
其中,对于公钥,typeName =“PUBLIC KEY”(AFAIR),因此很容易使用正则表达式检查,如下所示:
/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/
如果它不是PEM,那通常是普通的DER。
ASN.1 SEQUENCE的DER表示始终以0x30开头,所以通常当我必须解码DER-or-PEM流时,我知道它确实是ASN.1 SEQUENCE(最复杂的值是SEQUENCE,无论如何)我检查第一个字节:如果它是0x30,我解码为DER,否则我解码为PEM。
您可以使用my very own opensource ASN.1 parser快速检查您的ASN.1数据(这是所有客户端Javascript,因此我不会看到您的数据)。