我有一个用于密码保护的RSA交换的私钥。我知道密码,所以我可以使用密钥,但是,我不知道使用了哪个密码来进行密码。
根据this question的答案,我有其他密钥,其中密码在解密密钥的标头中命名。但是,加密时这个密钥只是开始:
-----BEGIN ENCRYPTED PRIVATE KEY-----
并在解密时:
-----BEGIN RSA PRIVATE KEY-----
没有进一步的标题。
openssl rsa
和gnutls certtool -k
等工具在给定密码时解密密钥并提供有关公钥的信息,但没有说明用于密码的对称密码。
据推测,这些应用程序知道密码是什么,因为它们解密密钥。有没有办法获得这些信息?如果我还有密码,那么保密就没有多大意义了。
使用gnutls API(但不是openssl)的程序化答案很好,但理想情况下我想知道现有的便携式工具。
答案 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解码器:
只需复制/粘贴数据并点击提交按钮即可!
如果安装了OpenSSL,也可以通过CLI执行openssl asn1parse -inform PEM -in file.ext -i
。
答案 1 :(得分:0)
使用ASN.1查看器之类的工具打开该文件(大多数文件也应该处理base64编码的数据,但是你可能需要首先使用base64解码的数据)。 之后,您将获得(最有可能)PKCS#8包装的密钥,您将通过查看OID获得密码。