如何在模运算中使用具有负指数的pow
函数?
pow(x, y, [z]) 如果有参数 z,x 和 y 必须是整数类型,y 必须非负。
>>> pow(11444, -357)
0.0
>>> pow(11444, -357) % 48731
0.0
>>> pow(11444, -357, 48731)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pow() 2nd argument cannot be negative when 3rd argument specified
在我的使用场景中,我希望使用Schnorr���案对消息进行加密:
y = (g ** -w) mod p
但是在这里,pow
不会接受负数作为第二个参数。例如,从以下代码中:
g = 11444
p = 48731
w = 357
y
应该是 7355
。
pow(10, -2)
会产生0.01
,所以你说 Python 不能使用负数 至少是你的一个误解。 - Martijn Pieters0.0
。 - Pallav Agarwalpow(29420, 357, 48731) == 7355
;你需要自己计算29420(例如使用扩展欧几里得算法)。 - DSM