密碼學筆記 - 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]