我有一个用于 RSA 交换的私钥,该私钥受密码保护。我知道密码,所以我可以使用 key ,但是,我不知道密码是用哪个密码来设置的。
我还有其他 key ,其中密码在解密 key 的 header 中命名,按照 this question 的答案。然而,这个 key 在加密时只是简单地开始:
-----BEGIN ENCRYPTED PRIVATE KEY-----
解密后:
-----BEGIN RSA PRIVATE KEY-----
没有更多标题。
openssl rsa
和 gnutls 的 certtool -k
等工具在给出密码时解密 key 并提供有关公钥的信息,但不透露任何有关对称密码的信息用于密码。
据推测,这些应用程序知道密码是什么,因为它们解密了 key 。有没有办法获取这些信息?如果我无论如何都有密码,那么保密似乎没有多大意义。
使用 gnutls API(但不是 openssl)的编程答案很好,但理想情况下我想知道现有的可移植工具。
最佳答案
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
。
关于rsa - 获取用于密码加密私钥的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149702/