2

我得到了一个 RSA pubkey.dat(几乎很明显它是什么),它的内容结构如下:

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

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

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

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

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

提前致谢。

4

1 回答 1

3

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 开头,所以通常当我必须解码我确定它是 ASN.1 SEQUENCE 的 DER 或 PEM 流时(无论如何,最复杂的值都是 SEQUENCE)我检查第一个字节:如果是 0x30,我解码为 DER,否则我解码为 PEM。

您可以使用我自己的开源 ASN.1 解析器快速检查您的 ASN.1 数据(它都是客户端 Javascript,所以我不会看到您的数据)。

于 2009-09-01T12:16:16.183 回答