我写了一个程序来查找RSA密钥中使用的两个大素数。这只是一个ctf挑战。我现在面临的问题是,这个数字是以10的幂表示的,我不想这样。我希望结果是完整的数字形式(不是10的幂,但可以是十进制)。你知道吗
我已经尝试过python的十进制库,但是我不知道为什么它会导致错误的答案。当删除十进制库及其函数时,它显示的是正确的结果。然而,即使在结果期间,十进制库也不能证明答案是完整的。你知道吗
代码:
import math
n = 456378902858290907415273676326459758501863587455889046415299414290812776158851091008643992243505529957417209835882169153356466939122622249355759661863573516345589069208441886191855002128064647429111920432377907516007825359999
s=str(math.sqrt(n))
print (s)
s=math.ceil(s)
print(s)
k=(s*s)-n
print(k)
k=math.ceil(k)
j=math.sqrt(k)
print(j)
p= (s-j)
q= (s+j)
print("p = " , p)
print("q = " , q)
i = p*q
l = n-i
print(l)
在这里,结果是l的0,但我需要的p和q是一个巨大的数字,(2.136302629426752e+112)是10的幂形式。你知道吗
祝你保理业务好运。它是一个复合材料,没有很小的因素,也不是费马琐碎。但这不是重点。你知道吗
安装gmpy2(例如pip安装gmpy2)。你知道吗
现在你可以这样写:
它以104位输入为例,应用费马的方法,很快就找到了一个因子。理论上,我们应该先加一个素数检验,这样如果给定素数,我们就不会永远旋转。你知道吗
相关问题 更多 >
编程相关推荐