获取密码用于密码加密私钥

时间:2013-04-22 14:31:58

标签: rsa private-key encryption-symmetric gnutls

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

根据this question的答案,我有其他密钥,其中密码在解密密钥的标头中命名。但是,加密时这个密钥只是开始:

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

并在解密时:

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

没有进一步的标题。

openssl rsa和gnutls certtool -k等工具在给定密码时解密密钥并提供有关公钥的信息,但没有说明用于密码的对称密码。

据推测,这些应用程序知道密码是什么,因为它们解密密钥。有没有办法获得这些信息?如果我还有密码,那么保密就没有多大意义了。

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

2 个答案:

答案 0 :(得分:3)

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

即。在这个例子中,正在使用des-ede3-cbc。这是一个可以使用的在线/开源ASN.1解码器:

phpseclib ASN.1 Decoder

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

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

答案 1 :(得分:0)

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