python - 使用十进制格式的私钥解密 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
解决方案
当你用 包装一个 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
,然后您可以进行下一步并使用它来解密您拥有的任何内容。
推荐阅读
- android - Lottie 动画有很大的填充。如何通过删除填充来调整动画到视图的大小
- docker - 在 Windows Container 中运行的非入口点(随机)进程如何写入 docker 默认日志输出(stdout)?
- python - 如何在 mayavi/tvtk 非结构化网格中添加几个标量场?
- r - 基于两个不同列中的两个条件的子集数据框 R
- c - MPLAB X 中的有效代码和编译器错误
- asp.net-core - 如何在用户存储中实现 AddToRoleAsync
- python - 创建两个列表的组合,直到一个列表中的值高于另一个?
- flutter - Flutter http 对象列表
- jquery - 未捕获的类型错误:$(...).collision 不是函数
- java - 获取人名首字母的方法