2009-07-09 66 views
2

我有一个RSA pubkey.dat(几乎明显它是什么),其对内容结构如下:约1024位(模数) RSA PUBKEY文件类型检测

  • ASN1整数的

    • ASN1整型(指数)
    • 斑点的256个字节(签名)

    无标签,如 “----开始---” 左右。纯十六进制值。

    有什么方法可以识别它的格式,就像是DER/PEM/etc一样,所以我可以用python加密库或crypto ++在C++上打开它?

    (或者,如果一个公共标准的结构名称为我检查相匹配)

    看起来似乎不是PEM为M2crypt无法加载它。

    在此先感谢。 PEM编码

  • 回答

    2

    具有强制性的格式:

    -----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-PEM流时,我知道它确实是ASN.1 SEQUENCE(最复杂的值是SEQUENCE,反正)我检查第一个字节:如果它的0x30,我解码为DER,否则我解码为PEM。

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