【问题标题】:RSA pubkey file type detectionRSA 公钥文件类型检测
【发布时间】:2010-11-09 07:38:30
【问题描述】:

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

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

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

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

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

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

提前致谢。

【问题讨论】:

    标签: cryptography types key rsa public


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-03
      • 2012-07-09
      • 2015-04-10
      • 2010-11-14
      • 2017-02-06
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多