常用加密算法
一、對稱加密
1.定義
需要加密大量數(shù)據(jù)
2.工作過程
3.常用的算法
DES
秘鑰:8個字節(jié)
3DES
AES
https://blog.csdn.net/lrwwll/article/details/78069013
在實(shí)際開發(fā)過程中要注意的地方
- 服務(wù)端和客戶端必須使用一樣的秘鑰和初始化向量(IV)
- 服務(wù)端和客戶端必須使用一樣的加密模式
- 服務(wù)端和客戶端必須使用一樣的padding模式
在python中使用
PyCrypto
PyCryptodome
https://pycryptodome.readthedocs.io/en/latest/src/introduction.html
二、非對稱加密
1.定義
公鑰,私鑰 ssh
2.特點(diǎn)
不會用來加密大量數(shù)據(jù),和對稱加密結(jié)合,用來加密對稱加密的秘鑰
3.工作原理
4.常用算法
RSA
算法原理
RSA算法基于一個十分簡單的數(shù)論事實(shí),將兩個大質(zhì)數(shù)相乘十分容易,但是想要對其乘積進(jìn)行因式分解卻極其困難。,因此,將乘積作為公開加密秘鑰。
RSA的加密解密過程非常簡單:
| 公鑰 | (n,e) |
|---|---|
| 私鑰 | (n,d) |
| 加密 | 密文 = (明文^e)%n |
| 解密 | 明文=(密文^d)%n |
秘鑰的生成步驟
-
隨機(jī)選擇兩個不想等的質(zhì)數(shù)p和q
選擇61,53 實(shí)際應(yīng)用中,越大越好
-
計(jì)算p和n的乘積
n = 61*53=3233
n的長度就是秘鑰的長度,實(shí)際應(yīng)用RSA秘鑰一般是1024位,重要場合2048位
-
計(jì)算n的歐拉函數(shù)φ(n)
φ(n) = (p-1)*(q-1) = 60 * 52=3120
-
隨機(jī)選擇一個整數(shù)e,條件是 1 < e < φ(n), 且 e與 φ(n) 互質(zhì)
隨機(jī)選了 17 ,實(shí)際應(yīng)用中,常常選 65537
-
計(jì)算e對φ(n)的模反元素d
所謂的模反元素就是指有一個整數(shù)d,一是的ed被φ(n)*除,余數(shù)為1
e*d - 1 = k * φ(n)
e*x + φ(n) * y = 1
17x +3120y = 1
x = 2753
y = -15
d = 2753
計(jì)算完畢
-
將n和e封裝成公鑰,n和d封裝是秘鑰
100
在python中使用RSA
三、hash(摘要算法)復(fù)習(xí)
1.定義
? 不定長輸入,定長輸出
2. 特點(diǎn)
- 不可逆
- 定長輸出
- 抗修改
- 強(qiáng)碰撞性
3.應(yīng)用領(lǐng)域
- 一致性校驗(yàn)
- 數(shù)字簽名
- 安全訪問認(rèn)證
4.常用算法
md5
sha家族
sha-1 sha-224 sha-256 sha -384 sha-512