語境
El Gamal 方法的解密數學公式如下:
m = ab^(-k) mod p
特別是在 Python 中,我想計算以下等效項:
>>> m = (b**(-k) * a) % p
上述 Python 代碼中的問題是由于精度原因,插入的數字會溢位或導致 0.0。考慮以下示例:
>>> (15653**(-3632) * 923) % 262643
0.0
上述示例的預期答案是 152015。
更多例子

嘗試
我試圖研究一種策略來處理這個問題,發現使用 Python 的默認pow(x,y,z),它不同于math.pow(),可以提供幫助。
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 中的數學公式?
uj5u.com熱心網友回復:
很容易:只需將兩者相乘,然后進行顯式修改:
>>> p = 262643
>>> pow(15653, -3632, p)
86669
>>> 86669 * 923 % p
152015
完畢!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382599.html
上一篇:方法有效但會引發特定數字的錯誤
