语境
El Gamal 方法的解密数学公式如下:
m = ab^(-k) mod p
特别是在 Python 中,我想计算以下等价物:
>>> m = (b**(-k) * a) % p
上面 Python 代码中的问题是插入的数字会溢出或由于精度而导致 0.0。考虑以下示例:
>>> (15653**(-3632) * 923) % 262643
0.0
上述示例的预期答案是 152015。
更多示例
尝试
我试图研究一种解决这个问题的策略,发现使用不同于math.pow()的 Python 的默认pow(x,y,z)可以提供帮助。
pow(x,y,z)等价于x**y % z
但是,我不能使用pow(x,y,z)
. 我尝试使用pow(15653, -3632, 262643),但我不能将pow(15653, -3632)的结果乘以923,然后作为最后一步,将 mod 乘以 262643。
换句话说,我正在尝试执行(x**y * a ) % z而不是x**y % z ,但显然存在 3 参数限制或操作数。pow(x,y,z)
我可以做些什么来计算 Python 中的数学公式?