我试图使用python中的RSA算法生成的值,通过使用python的pow函数和3个参数,但它似乎没有返回大数字的正确值。例如,如果我试着用一个小数字来做,比如42:
n=10002668571558232229090995822943
e=65537
d=3132501789258907532830941079073
number=pow(42,e,n)
print(number)
number=pow(number,d,n)
print(number)
输出为:
8057039574873290190626687506928
42
但是当我用一个大的数字来试的时候:
n=10002668571558232229090995822943
e=65537
d=3132501789258907532830941079073
number=pow(1691472818829646266231812146685797,e,n)
print(number)
number=pow(number,d,n)
print(number)
我得到这个输出:
4303635339538819794578326868533
1021830236305019515433852608430
我期待第二个数字是1691472818829646266231812146685797。
我试着在网上寻找解决方案,但我似乎找不到解决方案。如果你能帮忙的话,我将不胜感激。
1条答案
按热度按时间qzwqbdag1#
正如@总统评论的那样,你得到了正确的结果:
请参阅文件:
https://docs.python.org/3/library/functions.html#pow
将基地返回到电源exp;如果mod存在,则将base返回到power exp,modulo mod(比power(base,exp)% mod更有效地计算)。双参数形式pow(base,exp)等价于使用幂运算符:基础**实验
另外,我手动做了,
编辑:
请看这篇文章:
https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Encryption
只有当你的数字小于n时才有效
例如
因为:
现在,让我们来看下一个例子:
因为: