摘抄與理解--RSA加密和ssl

結(jié)論:

加密和解密使用同樣規(guī)則(簡(jiǎn)稱"密鑰")锚国,這被稱為"對(duì)稱加密算法"

RSA是一種非對(duì)稱加密的算法赋荆,為什么會(huì)有這個(gè)澡罚,先說(shuō)對(duì)成加密,對(duì)稱就是同一個(gè)密鑰加密解密闰围,不安全元旬,

SSL是基于非對(duì)稱加密的原理榴徐,在這之上還進(jìn)行了對(duì)稱加密的數(shù)據(jù)傳輸

對(duì)成加密的話:

(1)甲方選擇某一種加密規(guī)則守问,對(duì)信息進(jìn)行加密;

(2)乙方使用同一種規(guī)則坑资,對(duì)信息進(jìn)行解密耗帕。

因?yàn)榧用芤?guī)則是相同的,所以最好是一份數(shù)據(jù)袱贮,或者一個(gè)客戶一個(gè)密鑰仿便,每個(gè)人密鑰不能不能隨便公開(kāi)

非對(duì)稱加密的話:

? ? ? ?(1)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開(kāi)的攒巍,任何人都可以獲得嗽仪,私鑰則是保密的。

 ∑饫颉(2)甲方獲取乙方的公鑰闻坚,然后用它對(duì)信息加密。

 【ばⅰ(3)乙方得到加密后的信息窿凤,用私鑰解密。

雖然大家都是用的同一個(gè)公鑰加密的西潘,但是只有有密鑰才解得開(kāi)卷玉,隨便你的公鑰怎么傳播


互質(zhì)關(guān)系

如果兩個(gè)正整數(shù)哨颂,除了1以外喷市,沒(méi)有其他公因子,我們就稱這兩個(gè)數(shù)是互質(zhì)關(guān)系(coprime)威恼。比如品姓,15和32沒(méi)有公因子,所以它們是互質(zhì)關(guān)系箫措。這說(shuō)明腹备,不是質(zhì)數(shù)也可以構(gòu)成互質(zhì)關(guān)系。

關(guān)于互質(zhì)關(guān)系斤蔓,不難得到以下結(jié)論:

  1. 任意兩個(gè)質(zhì)數(shù)構(gòu)成互質(zhì)關(guān)系植酥,比如13和61。

  2. 一個(gè)數(shù)是質(zhì)數(shù)弦牡,另一個(gè)數(shù)只要不是前者的倍數(shù)友驮,兩者就構(gòu)成互質(zhì)關(guān)系,比如3和10驾锰。

  3. 如果兩個(gè)數(shù)之中卸留,較大的那個(gè)數(shù)是質(zhì)數(shù),則兩者構(gòu)成互質(zhì)關(guān)系椭豫,比如97和57耻瑟。

  4. 1和任意一個(gè)自然數(shù)是都是互質(zhì)關(guān)系旨指,比如1和99。

  5. p是大于1的整數(shù)喳整,則p和p-1構(gòu)成互質(zhì)關(guān)系谆构,比如57和56。

  6. p是大于1的奇數(shù)框都,則p和p-2構(gòu)成互質(zhì)關(guān)系低淡,比如17和15。

歐拉函數(shù)

請(qǐng)思考以下問(wèn)題:

  任意給定正整數(shù)n瞬项,請(qǐng)問(wèn)在小于等于n的正整數(shù)之中蔗蹋,有多少個(gè)與n構(gòu)成互質(zhì)關(guān)系?(比如囱淋,在1到8之中猪杭,有多少個(gè)數(shù)與8構(gòu)成互質(zhì)關(guān)系?)

計(jì)算這個(gè)值的方法就叫做歐拉函數(shù)妥衣,以φ(n)表示皂吮。在1到8之中,與8形成互質(zhì)關(guān)系的是1税手、3蜂筹、5、7芦倒,所以 φ(n) = 4艺挪,

我有個(gè)蠢的辦法先說(shuō)說(shuō),互質(zhì)的本質(zhì)是兵扬,兩個(gè)數(shù)的所有公因子麻裳,出了1沒(méi)有交集,所以我們可以先求8的所有公因子(1-8除個(gè)遍器钟,余數(shù)為零的就是他的公因子)津坑,然后剩下的1-8,循環(huán)一遍傲霸,把他們的所有公因子也求出來(lái)疆瑰,對(duì)比兩者的公因子除了1以外還有沒(méi)有交集,沒(méi)有的話昙啄,說(shuō)明兩者互質(zhì)穆役。

或者就是按照文章里的1-6條規(guī)則L一一算一遍

歐拉定理

歐拉函數(shù)的用處,在于歐拉定理跟衅。"歐拉定理"指的是:

如果兩個(gè)正整數(shù)a和n互質(zhì)孵睬,則n的歐拉函數(shù) φ(n) 可以讓下面的等式成立:

也就是說(shuō),a的φ(n)次方被n除的余數(shù)為1伶跷£粒或者說(shuō)秘狞,a的φ(n)次方減去1,可以被n整除蹈集。比如烁试,3和7互質(zhì),而7的歐拉函數(shù)φ(7)等于6拢肆,所以3的6次方(729)減去1减响,可以被7整除(728/7=104)。這他嗎是有點(diǎn)神奇的郭怪,好想看看推導(dǎo)過(guò)程

(3(φ(7)) - 1)= 7*104

歐拉定理的證明比較復(fù)雜支示,這里就省略了。我們只要記住它的結(jié)論就行了鄙才。

歐拉定理可以大大簡(jiǎn)化某些運(yùn)算颂鸿。比如,7和10互質(zhì)攒庵,根據(jù)歐拉定理嘴纺,

已知 φ(10) 等于4,所以馬上得到7的4倍數(shù)次方的個(gè)位數(shù)肯定是1浓冒。

因此栽渴,7的任意次方的個(gè)位數(shù)(例如7的222次方),心算就可以算出來(lái)

模反元素

還剩下最后一個(gè)概念:

如果兩個(gè)正整數(shù)a和n互質(zhì)稳懒,那么一定可以找到整數(shù)b闲擦,使得 ab-1 被n整除,或者說(shuō)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的模反元素

3 * 5 - 1 = 7 * 2?

5就是3的模反元素

密鑰生成的步驟

第一步宵溅,隨機(jī)選擇兩個(gè)不相等的質(zhì)數(shù)p和q凌简。互質(zhì)

愛(ài)麗絲選擇了61和53恃逻。(實(shí)際應(yīng)用中雏搂,這兩個(gè)質(zhì)數(shù)越大藕施,就越難破解。)

第二步凸郑,計(jì)算p和q的乘積n裳食。

愛(ài)麗絲就把61和53相乘。

  n = 61×53 = 3233

n的長(zhǎng)度就是密鑰長(zhǎng)度芙沥。3233寫成二進(jìn)制是110010100001诲祸,一共有12位,所以這個(gè)密鑰就是12位而昨。實(shí)際應(yīng)用中救氯,RSA密鑰一般是1024位,重要場(chǎng)合則為2048位歌憨。

第三步径密,計(jì)算n的歐拉函數(shù)φ(n)。

根據(jù)公式:

  φ(n) = (p-1)(q-1)

愛(ài)麗絲算出φ(3233)等于60×52躺孝,即3120享扔。

第四步,隨機(jī)選擇一個(gè)整數(shù)e植袍,條件是1< e < φ(n)惧眠,且e與φ(n) 互質(zhì)。

愛(ài)麗絲就在1到3120之間于个,隨機(jī)選擇了17氛魁。(實(shí)際應(yīng)用中,常常選擇65537厅篓。)

第五步秀存,計(jì)算e對(duì)于φ(n)的模反元素d。

所謂"模反元素"就是指有一個(gè)整數(shù)d羽氮,可以使得ed被φ(n)除的余數(shù)為1或链。

  ed ≡ 1 (mod φ(n))

這個(gè)式子等價(jià)于

  ed - 1 = kφ(n)

于是,找到模反元素d档押,實(shí)質(zhì)上就是對(duì)下面這個(gè)二元一次方程求解澳盐。

  ex + φ(n)y = 1

已知 e=17, φ(n)=3120,

  17x + 3120y = 1

這個(gè)方程可以用"擴(kuò)展歐幾里得算法"求解令宿,此處省略具體過(guò)程叼耙。總之粒没,愛(ài)麗絲算出一組整數(shù)解為 (x,y)=(2753,-15)筛婉,即 d=2753。

至此所有計(jì)算完成癞松。

第六步爽撒,將n和e封裝成公鑰冕碟,n和d封裝成私鑰。

在愛(ài)麗絲的例子中匆浙,n=3233安寺,e=17,d=2753首尼,所以公鑰就是 (3233,17)挑庶,私鑰就是(3233, 2753)。

實(shí)際應(yīng)用中软能,公鑰和私鑰的數(shù)據(jù)都采用ASN.1格式表達(dá)(實(shí)例)迎捺。

七、RSA算法的可靠性

回顧上面的密鑰生成步驟查排,一共出現(xiàn)六個(gè)數(shù)字:

p

q

n

φ(n)

e

d

這六個(gè)數(shù)字之中凳枝,公鑰用到了兩個(gè)(n和e),其余四個(gè)數(shù)字都是不公開(kāi)的跋核。其中最關(guān)鍵的是d岖瑰,因?yàn)閚和d組成了私鑰,一旦d泄漏砂代,就等于私鑰泄漏蹋订。

那么,有無(wú)可能在已知n和e的情況下刻伊,推導(dǎo)出d露戒?

  (1)ed≡1 (mod φ(n))捶箱。只有知道e和φ(n)智什,才能算出d。

 《∈骸(2)φ(n)=(p-1)(q-1)荠锭。只有知道p和q,才能算出φ(n)悦屏。

 〗诼佟(3)n=pq。只有將n因數(shù)分解础爬,才能算出p和q。

結(jié)論:如果n可以被因數(shù)分解吼鳞,d就可以算出看蚜,也就意味著私鑰被破解

加密和解密

有了公鑰和密鑰,就能進(jìn)行加密和解密了赔桌。

(1)加密要用公鑰 (n,e)

假設(shè)鮑勃要向愛(ài)麗絲發(fā)送加密信息m供炎,他就要用愛(ài)麗絲的公鑰 (n,e) 對(duì)m進(jìn)行加密渴逻。這里需要注意,m必須是整數(shù)(字符串可以取ascii值或unicode值)音诫,且m必須小于n惨奕。

所謂"加密",就是算出下式的c:

me?≡ c (mod n)

愛(ài)麗絲的公鑰是 (3233, 17)竭钝,鮑勃的m假設(shè)是65梨撞,那么可以算出下面的等式:

6517?≡ 2790 (mod 3233)

于是,c等于2790香罐,鮑勃就把2790發(fā)給了愛(ài)麗絲卧波。

(2)解密要用私鑰(n,d)

愛(ài)麗絲拿到鮑勃發(fā)來(lái)的2790以后,就用自己的私鑰(3233, 2753) 進(jìn)行解密庇茫「哿唬可以證明,下面的等式一定成立:

cd?≡ m (mod n)

也就是說(shuō)旦签,c的d次方除以n的余數(shù)為m〔槠海現(xiàn)在,c等于2790宁炫,私鑰是(3233, 2753)咪惠,那么,愛(ài)麗絲算出

27902753?≡ 65 (mod 3233)

因此淋淀,愛(ài)麗絲知道了鮑勃加密前的原文就是65遥昧。

至此,"加密--解密"的整個(gè)過(guò)程全部完成



原文1:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

原文2:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末朵纷,一起剝皮案震驚了整個(gè)濱河市炭臭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袍辞,老刑警劉巖鞋仍,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搅吁,居然都是意外死亡威创,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門谎懦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肚豺,“玉大人,你說(shuō)我怎么就攤上這事界拦∥辏” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)截碴。 經(jīng)常有香客問(wèn)我梳侨,道長(zhǎng),這世上最難降的妖魔是什么日丹? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任走哺,我火速辦了婚禮,結(jié)果婚禮上哲虾,老公的妹妹穿的比我還像新娘丙躏。我一直安慰自己,他們只是感情好妒牙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布彼哼。 她就那樣靜靜地躺著,像睡著了一般湘今。 火紅的嫁衣襯著肌膚如雪敢朱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天摩瞎,我揣著相機(jī)與錄音拴签,去河邊找鬼。 笑死旗们,一個(gè)胖子當(dāng)著我的面吹牛蚓哩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播上渴,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岸梨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了稠氮?” 一聲冷哼從身側(cè)響起曹阔,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隔披,沒(méi)想到半個(gè)月后赃份,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奢米,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年抓韩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬓长。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谒拴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痢士,到底是詐尸還是另有隱情彪薛,我是刑警寧澤茂装,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布怠蹂,位于F島的核電站善延,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏城侧。R本人自食惡果不足惜易遣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫌佑。 院中可真熱鬧豆茫,春花似錦、人聲如沸屋摇。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)炮温。三九已至火脉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柒啤,已是汗流浹背倦挂。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留担巩,地道東北人方援。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像涛癌,于是被迫代替她去往敵國(guó)和親犯戏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一拳话、RSA的歷史 1976 年以前先匪,所有的加密方法都是同一種模式: (1)甲方選擇某一種加密規(guī)則,對(duì)信息進(jìn)行加密假颇;...
    開(kāi)著保時(shí)捷堵你家門口閱讀 2,344評(píng)論 0 1
  • 本文分為三個(gè)模塊解析:一 : 流程圖 和 對(duì)話 了解對(duì)稱和非對(duì)稱加密二 : 前后端簡(jiǎn)單應(yīng)用三 : 非對(duì)稱加密算法 ...
    樹(shù)懶啊樹(shù)懶閱讀 14,439評(píng)論 0 3
  • 關(guān)于使用python實(shí)現(xiàn)RSA加密解密 一胚鸯、非對(duì)稱加密算法 1、乙方生成兩把密鑰(公鑰和私鑰)笨鸡。公鑰是公開(kāi)的姜钳,任何...
    ttaymm閱讀 938評(píng)論 0 0
  • 轉(zhuǎn):https://www.cnblogs.com/gwind/p/8013116.html 一、基礎(chǔ)數(shù)論 1形耗、互...
    right_33cb閱讀 410評(píng)論 0 0
  • 文/小面包 哈哈激涤,這里想說(shuō)的“三觀”可不是高大上的世界觀拟糕、人生觀判呕、價(jià)值觀、而是稻盛和夫的三種經(jīng)營(yíng)哲學(xué)送滞。 工作觀:勤...
    面包不打烊閱讀 309評(píng)論 0 6