1. 凱撒加密
加密方法:明文中的所有字母都在字母表上向后(或)向前按照一個固定的數(shù)目進行偏移。
例如,密鑰為3的凱撒加密算法可以定義為這樣:

凱撒加密的缺點:一個密文只有26個可能的密碼,可以通過暴力破解。
升級:單表代換
例如:概念:不固定字母表,把所有字母徹底打亂進行一一對應(yīng)。

但是這種方法也有缺點:破譯者可以通過對字母出現(xiàn)的頻率進行推測從而破解。
2. Playfair Cipher
加密方法:一次對多個字母進行加密。構(gòu)造一個
5*5的矩陣,首先選擇一個關(guān)鍵字作為開頭,關(guān)鍵字中沒有出現(xiàn)的字母按照順序填入矩陣,并利用該矩陣進行加密和解密。
Playfair Key Matrix
加密和解密過程:
- 先選擇一個關(guān)鍵字構(gòu)造矩陣;
- 一次對明文的相鄰兩個字母進行加密,如果:
- 兩個字母是相同的,那么選擇指定的字母作為密文,例如 'X';
- 如果兩個字母在矩陣的同一行,使用每個字母在矩陣中右邊的字母替代該字母;
- 如果兩個字母在矩陣的同一列,使用每個字母在矩陣中下面的字母替代該字母;
- 其他情況,以兩個字母為對角,畫一個矩形框,每個字母用另外同一行的對角的字母代替。
舉個例子:

這種加密方法雖然大大改進了加密程度和可能的結(jié)果,但是仍然是可以破譯的。
再升級:多表代替加密
概念:使用更多的字母表來提高密碼分析的難度,使用一個關(guān)鍵字來決定使用哪個字母表加密明文,重復(fù)對應(yīng)關(guān)鍵字和明文,按照順序使用字母表直到關(guān)鍵字結(jié)束。
3. Vigenere Cipher
加密方法:使用最簡單的多字母替換密碼,即多個凱撒加密,構(gòu)造一個從0到26的凱撒加密表:
- 寫出要加密的明文,再選擇一個keyword作為關(guān)鍵詞,重復(fù)書寫該關(guān)鍵詞使得其組成的字符串和明文一一對應(yīng);
- 在上面的加密表中,以關(guān)鍵字作為橫坐標(biāo),明文作為縱坐標(biāo),對應(yīng)的交點即為該字符的密文。
舉個例子:

4.置換加密
概念:置換加密通過重新排列字母順序來隱藏消息,但不改變實際使用的字母,因此可以通過頻率分布識別這些字母。
舉個例子:Rail Fence cipher
通過把明文錯位書寫,重新打亂順序進行排序:

升個級:Row Transposition Cipher
構(gòu)造一個固定寬度矩陣,按照指定的列數(shù)將明文填入,然后根據(jù)key(亂序)重新排列,得到密文:

置換加密的具體應(yīng)用:
- Rotor Machines 輪轉(zhuǎn)機
- Steganography 隱寫術(shù)(類似藏頭詩)
- (*)Hill Cipher
5. Feistel Cipher Structure
概念:將輸入的明文分組(L,R),對R進行加密,與L異或,得到新的R1,R0作為新的L1,從而進行多輪加密,最后將二者交換混合,得到密文。
對于Feistel Cipher:
- 塊長度:64,128
- 密鑰長度:64,128
- 加密輪數(shù):16
加密解密流程:

DES:Data Encryption Standard
S-盒:
P盒是個置換表,也沒搞懂是什么東西。。。
Triple DES:3DES使用三個密鑰并且執(zhí)行三次DES算法。(encrypt- decrypt-encrypt)
C=Ek3[Dk2[Ek1[p]]]3DES的有效密鑰長度為168bits

AES加密:
- 字節(jié)代換
- 行移位
- 列混淆
- 輪密鑰加密
字節(jié)代換:使用一個簡單的1616的表進行查詢,其中包含256個八位的值,對于一個字節(jié)XY,用第X行第Y列的值代替它,完成字節(jié)代換。
行移位:第一行不動,第二行向左移動一位,第三行向左移動兩位,以此類推。
列混淆:每一列拉出來和一個44的矩陣相乘,得到新的一列。
6. 分組加密
2-DES:
C = EK2(EK1(P))
其中K1,K2為兩個關(guān)鍵字,密文被這兩個關(guān)鍵字加密兩次;3-DES:
- 使用兩個key:
C = EK1(DK2(EK1(P)))- 使用三個key:
C = EK3(DK2(EK1(P)))
分組加密:
- Electronic CodeBook(ECB)電碼本模式
- Cipher Block Chaining(CBC)密文分組鏈接
- Cipher FeedBack(CFB)密文反饋
- Output FeedBack(OFB)輸出反饋
- Counter(CTR)計數(shù)器
7. Public-Key Cryptography
概念:該加密方法為非對稱加密。對于發(fā)送者和接收者都有兩個密鑰,分別是公鑰和私鑰。
加密方法:一次完整的加密過程如下
- A使用
A的私鑰對明文進行簽名- A使用
B的公鑰對明文進行加密- B接受密文
- B使用
B的私鑰對密文進行解密- B使用
A的公鑰對該密文進行身份驗證
單向陷門函數(shù):
-
單向函數(shù)是一些易于計算但難于求逆的函數(shù)。
-
陷門單向函數(shù)就是在已知一些額外信息的情況下易于求逆的單向函數(shù),這些額外信息就是所謂的陷門。
8.RSA?
大整數(shù)分解問題:任何一個整輸都可以分解為素數(shù)的n次方相乘的形式。

RSA算法描述:

計算題解題過程:

例題:

練習(xí):

例題中的應(yīng)用:

9.公鑰的分發(fā)
公鑰分發(fā)的方法:
- public announcement公開發(fā)布
- publicly available directory公開可訪問目錄
- public-key authority公鑰授權(quán)
- public-key certificates公鑰證書
10. D-F密鑰交換 Diffie-Hellman
操作:

例題:

CA:認(rèn)證機構(gòu)
安全協(xié)議:
- Secure Socket Layer (SSL)
- Transport Layer Security (TLS)
- Secure Electronic Transaction (SET)



