對稱加密
- 所謂對稱加密就是:加密和解密用的是同一個規(guī)則验夯。這個算法是人們能想到的最簡單的結構,就好比購物:賣家給包裝了,買家再拆掉一樣。
在代碼中舉個例子:
1. 要傳輸'{age:18}',字符串對應有asiii或者unicode败砂,假如這個字符串對應100000,
2. 我們設定密碼等于5魏铅,密文就等于500000昌犹,
3. 收到數(shù)據(jù)的人知道了密碼,直接500000/5=100000览芳,在通過解碼就知道傳輸?shù)膬热荨?
因為密碼也是通過http傳輸?shù)男崩眩悦艽a就容易泄露,盡管人們加了很多其他防護邏輯用來保證不泄密沧竟,但是從理論上會泄密铸敏,實現(xiàn)上就一定可能會泄密。
非對稱加密悟泵,RSA應運而生
- 故事背景:1976年美國兩個計算機科學家提出了非對稱加密的構思:加密和解密用不同的密碼杈笔。兩年之后,一個叫Rxxxx糕非,一個叫Sxxxxx蒙具,一個叫Axxxx,三個麻繩的教授搞出來了這個非對稱加密的實現(xiàn)朽肥,起名:RSA算法禁筏。
- 大概原理
1. A要和B通訊,B來生成公鑰和私鑰鞠呈,公鑰給A用來加密傳輸?shù)膬热萑谑Γ借€自己留著用來解密傳來的內容
- 這是一個純數(shù)學的原理
下邊看B的一頓騷操作:
1. 找兩個不想等的質數(shù)p和q,
2. 得到n=q*p蚁吝,其中n轉化為二進制的長度決定解密的難度旱爆。
3. 歐拉函數(shù): φ(n)=(p-1)*(q-1)
4. 找公鑰e:1<e<φ(n),其中e和φ(n)互為質數(shù)
5. 找密鑰d:e*d/φ(n)....1 e乘以d除以φ(n)余1
- 加密
設傳輸內容為m舀射,m的e次冪再除以n,求余數(shù)c怀伦,c就是加密之后的內容
- 解密
c的d次冪除以n脆烟,求余數(shù)m,得到的就是m房待,這個已經在數(shù)學上證明過的邢羔。
- 反推
1. 傳輸過程中暴露的有:n、e桑孩、c
2. 要想解密需要知道的:n拜鹤、d、c
3. 所以需要求d流椒,因為e乘以d除以φ(n)余1
4. 所以需要求φ(n)敏簿,因為φ(n)=(p-1)*(q-1)
5. 所以需要求p和q,現(xiàn)在有n宣虾,且n=p*q
6. 所以問題就變成了把n分解為p和q
7. 極大數(shù)分解質因數(shù)惯裕,是一個很難的過程
- 上面的是一個基本原理,在真正的https請求上绣硝,還加了很多其他邏輯蜻势,比如把傳入內容分段切割加密,部分環(huán)節(jié)加上對稱加密鹉胖,再引來大名鼎鼎的hash
- 量子計算機做極大數(shù)質因數(shù)分解握玛,給RSA帶來了威脅,因為這玩意算得太快了次员,
量子計算機是一類遵循量子力學規(guī)律進行高速數(shù)學和邏輯運算败许、存儲及處理量子信息的物理裝置
- 下一代加密,可能是量子加密淑蔚。
- 下下一代市殷,我也不知道……