密碼學筆記 - Fermat's Factorization Method
有一個奇合數 ,是兩個奇質數的乘積
令 那麼
但是今天我們不知道 ,而我們想要分解
那我們就猜 ,測試 是不是完全平方數
猜到的話可以從 反推回
沒猜到就把 加一繼續猜
使用條件
當 很小,可以有效的分解合數
Python 程式碼
import math
import gmpy2
def fermat(n):
a = math.ceil(math.sqrt(n))
b2 = a * a - n
while not gmpy2.iroot(b2, 2)[1]:
a = a + 1
b2 = a * a - n
b = math.sqrt(b2)
return [a + b, a - b]
載入評論區...