RSA pubkey文件类型检测

时间:2009-07-09 09:12:46

标签: cryptography types key rsa public

我有一个RSA pubkey.dat(几乎是显而易见的),其内容具有以下结构:

  • ASN1大约1024位的整数(模数)
  • ASN1整数(指数)
  • 256字节的Blob(签名)

没有像“---- begin ---”这样的标签。其中包含纯十六进制值。

有什么方法可以识别它的格式,比如它是DER / PEM /等,所以我可以用python加密库或c ++上的crypto ++打开它?

(或者,如果它与我要检查的公共标准结构名称相匹配)

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

提前致谢。

1 个答案:

答案 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,因此我不会看到您的数据)。