1

我有一个用于 RSA 交换的私钥,受密码保护。我知道密码,所以我可以使用密钥,但是,我不知道使用哪个密码来做密码。

根据此问题的答案,我还有其他密钥,其中密码在解密密钥的标头中命名。但是,加密后的此密钥仅启动:

-----BEGIN ENCRYPTED PRIVATE KEY-----

解密时:

-----BEGIN RSA PRIVATE KEY-----

没有进一步的标题。

诸如openssl rsagnutls 之类的工具certtool -k在给出密码时会解密密钥并提供有关公钥的信息,但不会说明用于密码的对称密码。

据推测,这些应用程序知道密码是什么,因为它们解密了密钥。有没有办法获取这些信息?如果我有密码的话,保守秘密似乎没有多大意义。

使用 gnutls API(但不是 openssl)的编程答案很好,但理想情况下我想知道现有的便携式工具。

4

2 回答 2

4

ASN.1 解码应该给你这样的东西:

    0:d=0  hl=4 l=1294 cons: SEQUENCE
    4:d=1  hl=2 l=  64 cons:  SEQUENCE
    6:d=2  hl=2 l=   9 prim:   OBJECT            :PBES2
   17:d=2  hl=2 l=  51 cons:   SEQUENCE
   19:d=3  hl=2 l=  27 cons:    SEQUENCE
   21:d=4  hl=2 l=   9 prim:     OBJECT            :PBKDF2
   32:d=4  hl=2 l=  14 cons:     SEQUENCE
   34:d=5  hl=2 l=   8 prim:      OCTET STRING
   44:d=5  hl=2 l=   2 prim:      INTEGER           :0800
   48:d=3  hl=2 l=  20 cons:    SEQUENCE
   50:d=4  hl=2 l=   8 prim:     OBJECT            :des-ede3-cbc
   60:d=4  hl=2 l=   8 prim:     OCTET STRING
   70:d=1  hl=4 l=1224 prim:  OCTET STRING

IE。在此示例中,使用的是 des-ede3-cbc。这是您可以使用的在线/开源 ASN.1 解码器:

phpseclib ASN.1 解码器

只需复制/粘贴您的数据并点击提交按钮!

openssl asn1parse -inform PEM -in file.ext -i如果您安装了 OpenSSL,您也可以通过 CLI 进行操作。

于 2013-04-23T13:43:28.080 回答
0

使用 ASN.1 查看器之类的工具打开该文件(它们中的大多数也应该处理 base64 编码的数据,但可能您需要先处理 base64 解码的数据)。之后,您将获得(最有可能的)PKCS#8 包装的密钥,并且您将通过查看 OID 获得密码。

于 2013-04-22T19:54:50.727 回答