首页 > 解决方案 > 使用十进制格式的私钥解密 RSA 密码

问题描述

我破解了一个弱 RSA 公钥。d现在我拥有作为整数的私钥。我d这样计算(python3):

phin = (p-1)*(q-1)

d = gmpy2.invert(e, phin)

其中 p 和 q 是计算模数 N 的因子。

如何使用它来解密给定的加密文件?转换d为 base64 并包装时

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

-----END PRIVATE KEY-----

周围,​​我得到了错误:Load key "key.txt": invalid format使用命令ssh-keygen -y -e -f key.txt

标签: pythonencryptionopensslrsaprivate-key

解决方案


当你用 包装一个 base64 编码的值时BEGIN PRIVATE KEY,你是在告诉你使用这个值的人它是一种特定的格式。它不仅仅是数字 d。您可以使用几种格式——如果我记得您可以使用 PKCS #1 https://www.rfc-editor.org/rfc/rfc3447或 PKCS #8。

例如,让您的 PKCS 1 格式化的最简单方法是使用一些加密库,例如,它允许您以 XML 形式提供密钥,并要求它生成 base64 编码的 DER 或 PEM 值。例如,在 C# 中,您有 RSA.FromXmlString(String)。使用适当的值构建 XML,其中包括您的 d,并让库函数构建 RSA 密钥,然后要求它为您提供该密钥的 PEM 格式。例如,这将为您提供带有 的文件BEGIN PRIVATE KEY,然后您可以进行下一步并使用它来解密您拥有的任何内容。


推荐阅读