问题描述
我目前正在使用大量密码技术。
a = 3087646334
p = 1606938044258990275541962092341162602522202993782792835301611
b = int((p-1)/2).
欧拉准则说
a ^ b(mod p)= 1或a ^ b(mod p)= p-1。
SAGE提供正确答案,而python提供错误答案。为什么呢?
代码在下面。
圣人
a = 3087646334
p = 1606938044258990275541962092341162602522202993782792835301611
b = int((p-1)/2)
power_mod(a,b,p)
Python
a = 3087646334
p = 1606938044258990275541962092341162602522202993782792835301611
b = int((p-1)/2)
pow(a,p)
解决方法
因为您使用的是浮点除法,所以不准确。请改用b = (p-1) // 2
。