RSA演算法簡介
RSA演算法簡介
RSA演算法是一種非對稱性加密演算法,現在算是最具有影響力的演算法,簡單來說RSA演算法運用了"一個大整數進行因式分解具備一定的難度"這個數學知識來進行加密,對一個極大整數做因式分解越難,那麼想要破解加密過後的密碼就越難。在瞭解RSA演算法之前,先要了解以下幾個知識點:
一、互質關係
__如果兩個正整數,除了1以外,沒有其他公因子,我們就稱這兩個數是互質關係(coprime)。__比如,15和32沒有公因子,所以它們是互質關係。這說明,不是質數也可以構成互質關係。
關於互質關係,不難得到以下結論:
- 任意兩個質數構成互質關係,比如13和61。
- 一個數是質數,另一個數只要不是前者的倍數,兩者就構成互質關係,比如3和10。
- 如果兩個數之中,較大的那個數是質數,則兩者構成互質關係,比如97和57。
- 1和任意一個自然數是都是互質關係,比如1和99。
- p是大於1的整數,則p和p-1構成互質關係,比如57和56。
- p是大於1的奇數,則p和p-2構成互質關係,比如17和15。
二、尤拉函式
尤拉函式可以用來解決"給定任意一個整數N,那麼小於N或等於N的整數中,有幾個和N是互質關係",可表示為φ(N)
例:以φ(8)表示
在小於或等於8之中,只有1,3,5,7和8是互質關係,所以φ(8)={1,3,5,7}=4
這裡只需要知道幾個知識點就夠了,沒必要把尤拉函式全部給理解了。
φ(n) 的計算方法並不複雜,但是為了得到最後那個公式,需要一步步討論。
第一種情況
如果n=1,則 φ(1) = 1 。因為1與任何數(包括自身)都構成互質關係。
第二種情況
如果n是質數,則 φ(n)=n-1 。因為質數與小於它的每一個數,都構成互質關係。比如5與1、2、3、4都構成互質關係。
第三種情況
如果n是質數的某一個次方,即 n = p^k (p為質數,k為大於等於1的整數),則
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-jzsUzcT5-1601259593358)(https://i.loli.net/2020/09/05/KXHNk6YDlTGjfcB.png)]
比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。
第四種情況
如果n可以分解成兩個互質的整數之積,n = p1 × p2 則 φ(n) = φ(p1p2) = φ(p1)φ(p2),
即積的尤拉函式等於各個因子的尤拉函式之積。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。
三、尤拉定理
當兩個整數A,B是互質關係的時候,那麼A的φ(A)次方除於N除餘必然是1
也就是說,a的φ(n)次方被m除的餘數為1。或者說,a的φ(m)次方減去1,可以被m整除。比如,3和7互質,而7的尤拉函式φ(7)等於6,所以3的6次方(729)減去1,可以被7整除(728/7=104)。
這個公式也不進行證明,比較複雜,只需要記住結論就好了。
尤拉定理有一個特殊情況,當m是質數p時,此式則為:
這就是著名的費馬小定理。它是尤拉定理的特例。
尤拉定理是RSA演算法的核心。理解了這個定理,就可以理解RSA。
四、模反元素
如果兩個正整數a和n互質,那麼一定可以找到整數b,使得 ab-1 被n整除,或者說ab被n除的餘數是1。
比如,3和11互質,那麼3的模反元素就是4,因為 (3 × 4)-1 可以被11整除。顯然,模反元素不止一個, 4加減11的整數倍都是3的模反元素 {…,-18,-7,4,15,26,…},即如果b是a的模反元素,則 b+kn 都是a的模反元素。
具體可以參考:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
文件資訊
- 版權宣告:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)
- 發表日期: 2013年6月27日
相關文章
- RSA加密演算法簡單介紹以及python實現加密演算法Python
- 演算法簡介演算法
- RSA演算法演算法
- LRU演算法簡介演算法
- RSA加密演算法加密演算法
- RSA演算法(一)演算法
- RSA演算法原理演算法
- 雜湊演算法簡介演算法
- JavaScript逆向之RSA演算法JavaScript演算法
- RSA演算法之學習演算法
- 常見國密演算法簡介演算法
- 非對稱加密演算法-RSA演算法加密演算法
- RSA演算法與Python實現演算法Python
- RSA演算法原理——(3)RSA加解密過程及公式論證演算法解密公式
- 人工智慧常見演算法簡介人工智慧演算法
- 期望最大化演算法(EM)簡介演算法
- PHP RSA2 簽名演算法PHP演算法
- 經典加密演算法入門-RSA加密演算法
- Java實現AES和RSA演算法Java演算法
- 58同城的登入(RSA演算法)演算法
- PHP中RSA加密演算法的使用PHP加密演算法
- Qtum研究院:Cuckoo Cycle演算法簡介QT演算法
- Relief 特徵選擇演算法簡單介紹特徵演算法
- 演算法與資料結構——圖簡介演算法資料結構
- 公開金鑰演算法-RSA-note演算法
- RSA非對稱加密演算法淺析加密演算法
- kmp 演算法簡介及 next 陣列推導KMP演算法陣列
- 01-資料結構與演算法簡介資料結構演算法
- 20.2 OpenSSL 非對稱RSA加解密演算法解密演算法
- RSA演算法揭秘:加密世界的守護者演算法加密
- iOS-在專案中引入RSA演算法iOS演算法
- 簡話密碼學3 - 常用加密演算法介紹密碼學加密演算法
- 部分聚類演算法簡介及優缺點分析聚類演算法
- 簡介
- python中rsa的RSAPython
- Jira使用簡介 HP ALM使用簡介
- 快取演算法:LRU、LFU、隨機替換等常見演算法簡介快取演算法隨機
- 紙上談兵: 排序演算法簡介及其C實現排序演算法