大数的模幂

Modular exponentiation of large number

我目前正在使用大量密码学。

a = 3087646334 

p = 1606938044258990275541962092341162602522202993782792835301611

b = int((p-1)/2).

欧拉准则说

a^b (mod p) = 1 or 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,b,p)

因为您使用的是不准确的浮点除法。请改用 b = (p-1) // 2