RSA算法原理——(2)RSA简介及基础数论知识
上期為大家介紹了目前常見加密算法,相信閱讀過的同學(xué)們對(duì)目前的加密算法也算是有了一個(gè)大概的了解。如果你對(duì)這些解密算法概念及特點(diǎn)還不是很清晰的話,昌昌非常推薦大家可以看看HTTPS的加密通信原理,因?yàn)镠TTPS加密通信使用了目前主要的三種加密算法,大家可以從中體會(huì)到各種加密算法的優(yōu)缺點(diǎn)。
一、目前常見加密算法簡介
二、RSA算法介紹及數(shù)論知識(shí)介紹
三、RSA加解密過程及公式論證
二、RSA算法介紹及數(shù)論知識(shí)介紹
如果上期(目前常見加密算法簡介)算是天安門前的話,那今天的內(nèi)容就算是正式通過天安門進(jìn)入故宮了。
1.RSA算法介紹
對(duì)于大多數(shù)IT從業(yè)者來說RSA算法并不陌生,因?yàn)槲覀兌喽嗌偕俣际褂眠^。而對(duì)于非IT從業(yè)者來說或許你們知道有加密算法,但是具體的哪種算法可能并不了解,其實(shí)對(duì)所有人來說都接觸過RSA算法,只是你并不知道而已for example:你百度一下或者掃一掃、信用卡付款等這些過程都使用到了RSA加密算法。就目前安全通信來講,RSA無處不在。
那RSA加密算法究竟是怎么來的呢?
RSA加密算法是一種非對(duì)稱加密算法。在公開密鑰加密和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當(dāng)時(shí)他們?nèi)硕荚诼槭±砉W(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的?!S基百科
2.數(shù)論知識(shí)介紹
其實(shí)RSA算法加解密其實(shí)就是兩個(gè)公式,只是為了理解這兩個(gè)公式我們需要學(xué)習(xí)數(shù)論中的四個(gè)概念:互質(zhì)、歐拉函數(shù)、歐拉定理、模反元素,這四個(gè)概念都是非常好理解的,不需要有數(shù)論的基礎(chǔ),只需要有初高中的數(shù)學(xué)就夠用就能理解,下面我們就來看看這四個(gè)概念是什么?
(1)互質(zhì)關(guān)系
如果兩個(gè)正整數(shù),除了1以外沒有其他公因子,我們就稱這兩個(gè)數(shù)是互質(zhì)關(guān)系(coprime)。比如,6和21他們的公因子有:3和1,所以6和21就不是互質(zhì);而10和21只有一個(gè)公因子1,所以它們是互質(zhì)關(guān)系。這說明,不是質(zhì)數(shù)也可以構(gòu)成互質(zhì)關(guān)系。
有以下幾點(diǎn)可構(gòu)成互質(zhì)關(guān)系:
(2)歐拉函數(shù)
思考:請(qǐng)問10以內(nèi)的正整數(shù)有哪幾個(gè)與10互質(zhì)呢?
答案是:{1,3,7,9},10以內(nèi)可能用手指就可以算過來,那100呢?1000呢?那是不是有什么公式可以計(jì)算?答案是有,這就是我們這里要講的的歐拉函數(shù):
任意給定正整數(shù)n,請(qǐng)問在小于等于n的正整數(shù)之中,有多少個(gè)與n構(gòu)成互質(zhì)關(guān)系?
計(jì)算這個(gè)值的方法就叫做歐拉函數(shù),以φ(n)表示。在1到10之中,與10形成互質(zhì)關(guān)系的是1、3、7、9,所以 φ(10) = 4。
φ(n) 的計(jì)算方法并不復(fù)雜,但是為了得到最后那個(gè)公式,需要一步步討論。對(duì)于下面的公式大家稍微記住就行,沒必要理解通透,有時(shí)候適當(dāng)?shù)泥駠魍虠椖茏屇銓W(xué)習(xí)的更快!
第一種情況
如果n=1,則 φ(1) = 1 。因?yàn)?與任何數(shù)(包括自身)都構(gòu)成互質(zhì)關(guān)系
第二種情況
如果n是質(zhì)數(shù),則 φ(n)=n-1 。因?yàn)橘|(zhì)數(shù)與小于它的每一個(gè)數(shù),都構(gòu)成互質(zhì)關(guān)系。比如5與1、2、3、4都構(gòu)成互質(zhì)關(guān)系。
第三種情況
如果n是質(zhì)數(shù)的某一個(gè)次方,即 n = p^k (p為質(zhì)數(shù),k為大于等于1的整數(shù)),則
比如 φ(8) = φ(2^3) =2^3 – 2^2 = 8 -4 = 4。
這是因?yàn)橹挥挟?dāng)一個(gè)數(shù)不包含質(zhì)數(shù)p,才可能與n互質(zhì)。而包含質(zhì)數(shù)p的數(shù)一共有p^(k-1)個(gè),即1×p、2×p、3×p、…、p^(k-1)×p,把它們?nèi)コ?#xff0c;剩下的就是與n互質(zhì)的數(shù)。
上面的式子還可以寫成下面的形式:
可以看出,上面的第二種情況是 k=1 時(shí)的特例。
第四種情況
如果n可以分解成兩個(gè)互質(zhì)的整數(shù)之積,
n = p1 × p2
則
φ(n) = φ(p1p2) = φ(p1)φ(p2)
即積的歐拉函數(shù)等于各個(gè)因子的歐拉函數(shù)之積。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24
第五種情況
因?yàn)槿我庖粋€(gè)大于1的正整數(shù),都可以寫成一系列質(zhì)數(shù)的積。
根據(jù)第4條的結(jié)論,得到
再根據(jù)第3條的結(jié)論,得到
也就等于
這就是歐拉函數(shù)的通用計(jì)算公式。比如,1323的歐拉函數(shù),計(jì)算過程如下:
(3)歐拉定理
歐拉函數(shù)的用處,在于歐拉定理?!?strong>歐拉定理”指的是:
如果兩個(gè)正整數(shù)a和n互質(zhì),則n的歐拉函數(shù) φ(n) 可以讓下面的等式成立:
也就是說,a的φ(n)次方被n除的余數(shù)為1?;蛘哒f,a的φ(n)次方減去1,可以被n整除。比如,3和7互質(zhì),而7的歐拉函數(shù)φ(7)等于6,所以3的6次方(729)減去1,可以被7整除(728/7=104)。
科普:mod為取模,取模運(yùn)算與取余運(yùn)算還是有區(qū)別。取余的商是靠近0的,而取模的商是靠近負(fù)無窮的,看下面的例子:
7 mod 4 = 3(商 = 1 或 2,1<2,取商=1,與取余相同)
-7 mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
7 mod -4 = -1(商 = -1或-2,-2<-1,取商=-2)
-7 mod -4 = -3(商 = 1或2,1<2,取商=1,與取余相同)
歐拉定理的證明比較復(fù)雜,這里就省略了。我們只要記住它的結(jié)論就行了。
歐拉定理可以大大簡化某些運(yùn)算。比如,7和10互質(zhì),根據(jù)歐拉定理,
這
因此,7的任意次方的個(gè)位數(shù)(例如7的222次方),心算就可以算出來。
歐拉定理是RSA算法的核心。理解了這個(gè)定理,就可以理解RSA。多看幾遍歐拉定理的定義,知道公式表達(dá)的意思就夠了。
(4)模反元素
還剩最后一個(gè)概念:
如果兩個(gè)正整數(shù)a和n互質(zhì),那么一定可以找到整數(shù)b,使得 ab-1 被n整除,或者說ab被n除的余數(shù)是1
這時(shí),b就叫做a的“模反元素”。
比如,3和11互質(zhì),那么3的模反元素就是4,因?yàn)?(3 × 4)-1 可以被11整除。顯然,模反元素不止一個(gè), 4加減11的整數(shù)倍都是3的模反元素 {…,-18,-7,4,15,26,…},即如果b是a的模反元素,則 b+kn 都是a的模反元素。
歐拉定理可以用來證明模反元素必然存在。
可以看到,a的 φ(n)-1 次方,就是a的模反元素。
至此RSA算法的需要的數(shù)學(xué)知識(shí)就講完了,讓我們來總結(jié)一下吧:
歐拉定理:如果兩個(gè)正整數(shù)a和n互質(zhì),則n的歐拉函數(shù) φ(n) 可以讓下面的等式成立:
如果兩個(gè)正整數(shù)a和n互質(zhì),那么一定可以找到整數(shù)b,使得 ab-1 被n整除,或者說ab被n除的余數(shù)是1,這時(shí),b就叫做a的“模反元素”
是不是感覺也不是很難呀,下期我們將一起進(jìn)入RSA算法最核心的內(nèi)容:RSA加解密過程及公式論證,我會(huì)為大家一步一步的推論,絕對(duì)會(huì)是最詳細(xì)的一份RSA算法原理剖析,大家期待吧!
ps:有一份英文介紹RSA加密算法的文檔,感興趣的同學(xué)可以看看:The RSA Cryptosystem: History, Algorithm, Primes
附手稿:
總結(jié)
以上是生活随笔為你收集整理的RSA算法原理——(2)RSA简介及基础数论知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RSA算法原理——(1)目前常见加密算法
- 下一篇: 排序算法——(1)简介