python - p==q 时的 RSA 加密
问题描述
两天前我参加了 DawgCTF。我正要解决 RSA 问题,但我无法解决。
DawgCTF 的 RSA 问题给出了 n、e、c。
所以,我使用 factordb 对 n 进行因式分解,n 的结果是只有一个素数的平方。(即 n=p^2)
我从未见过 p 和 q 在 RSA Crypto 中相同的情况。无论如何,我让 phi 为 (p-1)(q-1) 并编写如下代码。(phi 表示欧拉的 phi)
from Crypto.Util.number import inverse, long_to_bytes
import string
n = ~~~
e = 65537
c = ~~~
p = ~~~ # I omit q because p==q
phi = (p-1) * (p-1)
d = inverse(e, phi)
m = pow(c, d, n)
m = long_to_bytes(m)
print(m)
但是,没有用!!!
在 CTF 之后,我找了一篇文章,其中他没有将 phi 设置为 (p-1)^2,而是 p*(p-1)。但是,我不知道为什么......为什么当 p==q 时 phi 应该是 p*(p-1)?
如果您能解释一下,我将不胜感激。
解决方案
推荐阅读
- python - pycuda 和 tensorflow 可以一起工作吗?
- javascript - 承诺中的 ClearTimeout 使用最佳实践
- javascript - ES6 代理:捕获未定义的函数执行
- python-3.x - 安装后没有名为“atari_py”的模块
- excel - 在单元格范围结束后动态选择单元格
- wordpress - wordpress 联系表格 7 日期选择器禁用
- javascript - CanvasJS 切换图形
- java - Java Web 应用程序返回错误 HTTP 404 Not Found
- mysql - SQL“自动增量”作为主键的限制
- c# - 排序字符串的 SQL Server CLR 函数聚合