1. 程式人生 > >簡述大數分解演算法Pollard Rho和Pollard p-1

簡述大數分解演算法Pollard Rho和Pollard p-1

大數分解問題其實至今都是一個世界級難題,最常見的分解法是從2一直找到sqr(N),作為一個密碼學專業的學生,每次看到別人這麼做來進行因子分解,自己都控制不住想要制止他,因為這個演算法的效率簡直太太太太太低了。

於是,簡單介紹一下牛逼哄哄的Pollard演算法,專制各種大數。

先說rho演算法。

rho演算法其實是一種概率上的演算法,雖然是靠概率,但是其準確率非常高(99.9%),更重要的是,該演算法效率極高。其主要基於密碼學當中的一個“生日悖論“來進行演算法的設計。簡單來講就是,我們將N的兩個因子x和y(就假設它有兩個)從一大堆數裡挑出來的概率非常小,但是如果我們挑滿足x-y等於某個數的話,概率就要大很多。更進一步,如果我們找gcd(|x-y| ,N)呢?那麼概率就會更大,就是這麼個道理。

關於Rho演算法,要注意有可能會進入死迴圈,也就是說我們要在演算法中對其進行判圈,具體的做法是,每次a=f(a),再找一個b=f(f(b)),如果有一個時刻a=b那麼就退出迴圈,因為b是以兩倍的速度走得,當b追上了a,那麼b至少已經走完一圈了。

再說p-1演算法。

這種方法是在p-1的素數分解式中不含有大於預定B值的素因數的情況下,找到一個基本的素數p,求出一個數的素因數。方法有點特殊,它只能應用在求整數n的一個素因子p,且p-1能被“小”因子整除的情況下,除此之外該方法無法正常應用。但是這個方法運用起來相當簡單,所以在防止因式分解攻擊時,必須考慮這一方法