rsa - 获取用于密码加密私钥的密码

标签 rsa private-key encryption-symmetric gnutls

我有一个用于 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 解码器:

phpseclib ASN.1 Decoder

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

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

关于rsa - 获取用于密码加密私钥的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149702/

相关文章:

java - JAVA中简单的RSA加密和解密消息

Docker:从构建上下文外部向图像添加 rsa 键

security - 使用公钥/私钥对作为交付证明

用于清理 openssl EVP_PKEY 私钥内存的 C 代码

c# - AES 解密的消息与原始消息不匹配

java - 使用 JCE/JCA 从主 key 派生 secret

algorithm - RSA算法复杂度分析

encryption - SHA1 与 RSA : what's the difference between them?

java - 如何格式化导出的 Vault 私钥以供使用?

c - MBED TLS 对称 key 包装