一張圖快速看懂:對(duì)稱和非對(duì)稱(RSA)加密

本文分為三個(gè)模塊解析:
一 : 流程圖 和 對(duì)話 了解對(duì)稱和非對(duì)稱加密
二 : 前后端簡(jiǎn)單應(yīng)用
三 : 非對(duì)稱加密算法

另外:移動(dòng)傳輸更好的加密選擇ECC:
公鑰加密算法那些事 | RSA 與 ECC 系統(tǒng)對(duì)比

一 先上一波流程圖(手機(jī)瀏覽點(diǎn)擊放大查看):
對(duì)稱和非對(duì)稱流程圖
下面用一個(gè)箱子的對(duì)白來(lái)理解這個(gè)流程:
縱橫家密碼箱
1 對(duì)稱加密:
1對(duì)稱
2對(duì)稱
3對(duì)稱
4對(duì)稱加密缺點(diǎn):把密碼告知對(duì)方的過(guò)程是很不安全的

解析: 對(duì)稱加密有個(gè)致命缺點(diǎn),一定要把開(kāi)箱密碼告知對(duì)方,但是把密碼告知對(duì)方的過(guò)程是很不安全的.

2 非對(duì)稱加密:
5非對(duì)稱
6非對(duì)稱
7非對(duì)稱:歐拉定理等等

------------start---簡(jiǎn)單應(yīng)用--------------

三 前后端開(kāi)發(fā)中的應(yīng)用

優(yōu)缺點(diǎn):
對(duì)稱加密 : 安全性 , 加解密速度
非對(duì)稱加密 : 安全性 , 加解密速度

策略:
1 對(duì)于需要加密 的較長(zhǎng)內(nèi)容,需要分段加密
2 考慮到性能問(wèn)題,可綜合使用AES 和 RSA ,使用 對(duì)稱加密對(duì)稱密鑰A 對(duì)內(nèi)容加密, 然后使用 非對(duì)稱加密非對(duì)稱公鑰B 對(duì) 對(duì)稱密鑰A 進(jìn)行加密 得到 D, 另一方得到數(shù)據(jù)后,使用 非對(duì)稱私鑰C 來(lái)解密 D 獲得 對(duì)稱密鑰A , 再對(duì)內(nèi)容密文解密 得到 明文.

密鑰生成工具: 這個(gè)自行可以搜索一下

簡(jiǎn)單實(shí)例:
比如登錄成功后臺(tái)返回token,或者傳輸身份證等信息:
以token為例:
前端代碼生成 對(duì)稱密鑰A 和 非對(duì)稱公鑰B 和 非對(duì)稱私鑰C ,登錄時(shí),前端把非對(duì)稱公鑰B傳給服務(wù)器, 然后服務(wù)器返回token時(shí),加密返回給前端, 前端解密.

------------start----算法原理--------------

三 非對(duì)稱加密算法

(1)乙方生成兩把密鑰(公鑰和私鑰)龄恋。公鑰是公開(kāi)的,任何人都可以獲得宵膨,私鑰則是保密的惩妇。
(2)甲方獲取乙方的公鑰蛙讥,然后用它對(duì)信息加密。
(3)乙方得到加密后的信息孝鹊,用私鑰解密讼油。

如果公鑰加密的信息只有私鑰解得開(kāi),那么只要私鑰不泄漏惑朦,通信就是安全的。

2 發(fā)明者

1977年漾月,三位數(shù)學(xué)家Rivest、Shamir 和 Adleman 設(shè)計(jì)了一種算法胃珍,可以實(shí)現(xiàn)非對(duì)稱加密梁肿。這種算法用他們?nèi)齻€(gè)人的名字命名,叫做RSA算法觅彰。從那時(shí)直到現(xiàn)在吩蔑,RSA算法一直是最廣為使用的”非對(duì)稱加密算法”。毫不夸張地說(shuō)填抬,只要有計(jì)算機(jī)網(wǎng)絡(luò)的地方烛芬,就有RSA算法。

3 如何生成公鑰和密鑰?

RSA算法密鑰需要生成下面六個(gè)數(shù)字 (如何生成在?? 的6中解釋)

p = 質(zhì)數(shù) (最好大于1024位)
q = 質(zhì)數(shù) (最好大于1024位 , 兩個(gè)不相等的質(zhì)數(shù)p和q)
n = p和q的乘積 (公開(kāi)的)
φ(n) = n的歐拉函數(shù)
e = 隨機(jī)選擇一個(gè)整數(shù)e飒责,條件是1< e < φ(n)赘娄,且e與φ(n) 互質(zhì) (公開(kāi)的)
d = e對(duì)于φ(n)的模反元素d

上面6個(gè)數(shù)字會(huì)保證一點(diǎn) : 公鑰加密的信息只有私鑰解得開(kāi)

  • 所以:
    把公開(kāi)的n成功分解就能獲得d,從而破解密鑰.

  • 但是:
    下文4會(huì)介紹,分解n只能暴力破解,目前聲明破解最長(zhǎng)的是768位的密鑰,那么我們使用至少大于1024位的密鑰,還是很安全的, 某種程度是越長(zhǎng)越好.

只有這樣, 在無(wú)法分解質(zhì)數(shù)乘積n時(shí),公鑰加密的信息只有私鑰解得開(kāi)

4 破解RSA算法的核心 : 分解質(zhì)數(shù)乘積n

根據(jù)已經(jīng)披露的文獻(xiàn),目前被破解的最長(zhǎng)RSA密鑰是 768 個(gè)二進(jìn)制位宏蛉。

12301866845301177551304949
58384962720772853569595334
79219732245215172640050726
36575187452021997864693899
56474942774063845925192557
32630345373154826850791702
61221429134616704292143116
02221240479274737794080665
351419597459856902143413

它等于這樣兩個(gè)質(zhì)數(shù)的乘積:

33478071698956898786044169
84821269081770479498371376
85689124313889828837938780
02287614711652531743087737
814467999489
×
36746043666799590428244633
79962795263227915816434308
76426760322838157396665112
79233373417143396810270092
798736308917

事實(shí)上遣臼,這大概是人類已經(jīng)分解的最大整數(shù)(232個(gè)十進(jìn)制位,768個(gè)二進(jìn)制位)拾并。比它更大的因數(shù)分解揍堰,還沒(méi)有被報(bào)道過(guò),因此目前被破解的最長(zhǎng)RSA密鑰就是768位嗅义。

也就是說(shuō)屏歹,長(zhǎng)度超過(guò)768位的密鑰,還無(wú)法破解(至少?zèng)]人公開(kāi)宣布)芥喇。因此可以認(rèn)為西采,1024位的RSA密鑰基本安全,2048位的密鑰極其安全继控。

5 如何獲得上面滿足要求的6個(gè)數(shù)字?

1 : 隨機(jī)選擇質(zhì)數(shù)p= 61 和 q = 53 (這里拿小數(shù)字測(cè)試) ,它們是互質(zhì)關(guān)系

  • 質(zhì)數(shù) : 只能被1和本身整除
  • 互質(zhì)關(guān)系 : 如果兩個(gè)正整數(shù)械馆,除了1以外胖眷,沒(méi)有其他公因子,我們就稱這兩個(gè)數(shù)是

2 : 質(zhì)數(shù)乘積 n = p x q = 61 x 53 = 3233

3 : 計(jì)算n的歐拉函數(shù)φ(n) = (p-1)(q-1) = 60 x 52 = 3120

4 : 隨機(jī)選擇一個(gè)整數(shù)e霹崎,條件是1< e < φ(n)珊搀,且e與φ(n) 互質(zhì)。
這里假設(shè)選擇 e = 17

5 : 計(jì)算e對(duì)于φ(n)的模反元素d

  • 所謂“模反元素”就是指有一個(gè)整數(shù)d尾菇,可以使得ed被φ(n)除的余數(shù)為1境析。
這個(gè)式子等價(jià)于
ed – 1 = kφ(n)
于是,找到模反元素d派诬,實(shí)質(zhì)上就是對(duì)下面這個(gè)二元一次方程求解劳淆。
ex + φ(n)y = 1
已知 e = 777 , φ(n) = 6840,
777 x + 6840 y = 1

這個(gè)方程可以用“擴(kuò)展歐幾里得算法”求解默赂,此處省略具體過(guò)程沛鸵。總之缆八,愛(ài)麗絲算出一組整數(shù)解為 (x,y)=(2753,-15)曲掰,即 d=2753。

c語(yǔ)言代碼:
int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}

6 公鑰如何加密? 私鑰如何解密?

(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)

因此,加密前的原文就是65怕享≈瓷模”加密–解密”的整個(gè)過(guò)程全部完成。

-------------------end-----------------------------
參考:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末函筋,一起剝皮案震驚了整個(gè)濱河市沙合,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跌帐,老刑警劉巖首懈,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谨敛,居然都是意外死亡究履,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門佣盒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挎袜,“玉大人,你說(shuō)我怎么就攤上這事肥惭。” “怎么了紊搪?”我有些...
    開(kāi)封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蜜葱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我耀石,道長(zhǎng)牵囤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任滞伟,我火速辦了婚禮揭鳞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梆奈。我一直安慰自己野崇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布亩钟。 她就那樣靜靜地躺著乓梨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪清酥。 梳的紋絲不亂的頭發(fā)上扶镀,一...
    開(kāi)封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音焰轻,去河邊找鬼臭觉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝠筑。 我是一名探鬼主播狞膘,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼菱肖!你這毒婦竟也來(lái)了客冈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稳强,失蹤者是張志新(化名)和其女友劉穎场仲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體退疫,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渠缕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褒繁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亦鳞。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖棒坏,靈堂內(nèi)的尸體忽然破棺而出燕差,到底是詐尸還是另有隱情,我是刑警寧澤坝冕,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布徒探,位于F島的核電站,受9級(jí)特大地震影響喂窟,放射性物質(zhì)發(fā)生泄漏测暗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一磨澡、第九天 我趴在偏房一處隱蔽的房頂上張望碗啄。 院中可真熱鬧,春花似錦稳摄、人聲如沸稚字。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尉共。三九已至,卻和暖如春弃锐,著一層夾襖步出監(jiān)牢的瞬間袄友,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工霹菊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剧蚣,地道東北人支竹。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鸠按,于是被迫代替她去往敵國(guó)和親礼搁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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