1. 凱撒加密
加密方法:明文中的所有字母都在字母表上向后(或)向前按照一個(gè)固定的數(shù)目進(jìn)行偏移琐鲁。
例如息裸,密鑰為3的凱撒加密算法可以定義為這樣:
凱撒加密的缺點(diǎn):一個(gè)密文只有26個(gè)可能的密碼顶滩,可以通過暴力破解铃诬。
升級:單表代換
例如:概念:不固定字母表贿肩,把所有字母徹底打亂進(jìn)行一一對應(yīng)烦味。
但是這種方法也有缺點(diǎn):破譯者可以通過對字母出現(xiàn)的頻率進(jìn)行推測從而破解龙填。
2. Playfair Cipher
加密方法:一次對多個(gè)字母進(jìn)行加密。構(gòu)造一個(gè)
5*5
的矩陣拐叉,首先選擇一個(gè)關(guān)鍵字作為開頭岩遗,關(guān)鍵字中沒有出現(xiàn)的字母按照順序填入矩陣,并利用該矩陣進(jìn)行加密和解密凤瘦。
Playfair Key Matrix
加密和解密過程:
- 先選擇一個(gè)關(guān)鍵字構(gòu)造矩陣宿礁;
- 一次對明文的相鄰兩個(gè)字母進(jìn)行加密,如果:
- 兩個(gè)字母是相同的蔬芥,那么選擇指定的字母作為密文梆靖,例如 'X';
- 如果兩個(gè)字母在矩陣的同一行笔诵,使用每個(gè)字母在矩陣中右邊的字母替代該字母返吻;
- 如果兩個(gè)字母在矩陣的同一列,使用每個(gè)字母在矩陣中下面的字母替代該字母乎婿;
- 其他情況测僵,以兩個(gè)字母為對角,畫一個(gè)矩形框谢翎,每個(gè)字母用另外同一行的對角的字母代替捍靠。
舉個(gè)例子:
這種加密方法雖然大大改進(jìn)了加密程度和可能的結(jié)果,但是仍然是可以破譯的森逮。
再升級:多表代替加密
概念:使用更多的字母表來提高密碼分析的難度榨婆,使用一個(gè)關(guān)鍵字來決定使用哪個(gè)字母表加密明文,重復(fù)對應(yīng)關(guān)鍵字和明文褒侧,按照順序使用字母表直到關(guān)鍵字結(jié)束良风。
3. Vigenere Cipher
加密方法:使用最簡單的多字母替換密碼,即多個(gè)凱撒加密闷供,構(gòu)造一個(gè)從0到26的凱撒加密表:
- 寫出要加密的明文烟央,再選擇一個(gè)keyword作為關(guān)鍵詞,重復(fù)書寫該關(guān)鍵詞使得其組成的字符串和明文一一對應(yīng)这吻;
- 在上面的加密表中吊档,以關(guān)鍵字作為橫坐標(biāo)篙议,明文作為縱坐標(biāo)唾糯,對應(yīng)的交點(diǎn)即為該字符的密文怠硼。
舉個(gè)例子:
4.置換加密
概念:置換加密通過重新排列字母順序來隱藏消息,但不改變實(shí)際使用的字母移怯,因此可以通過頻率分布識別這些字母香璃。
舉個(gè)例子:Rail Fence cipher
通過把明文錯(cuò)位書寫,重新打亂順序進(jìn)行排序:
升個(gè)級:Row Transposition Cipher
構(gòu)造一個(gè)固定寬度矩陣舟误,按照指定的列數(shù)將明文填入葡秒,然后根據(jù)key(亂序)重新排列,得到密文:
置換加密的具體應(yīng)用:
- Rotor Machines 輪轉(zhuǎn)機(jī)
- Steganography 隱寫術(shù)(類似藏頭詩)
- (*)Hill Cipher
5. Feistel Cipher Structure
概念:將輸入的明文分組(L,R)嵌溢,對R進(jìn)行加密眯牧,與L異或,得到新的R1赖草,R0作為新的L1学少,從而進(jìn)行多輪加密,最后將二者交換混合秧骑,得到密文版确。
對于Feistel Cipher
:
- 塊長度:64,128
- 密鑰長度:64乎折,128
- 加密輪數(shù):16
加密解密流程:
DES:Data Encryption Standard
S-盒:P盒是個(gè)置換表绒疗,也沒搞懂是什么東西。骂澄。吓蘑。
Triple DES:3DES使用三個(gè)密鑰并且執(zhí)行三次DES算法。(encrypt- decrypt-encrypt)
C=Ek3[Dk2[Ek1[p]]]
3DES的有效密鑰長度為168bits
AES加密:
- 字節(jié)代換
- 行移位
- 列混淆
- 輪密鑰加密
字節(jié)代換:使用一個(gè)簡單的1616的表進(jìn)行查詢坟冲,其中包含256個(gè)八位的值士修,對于一個(gè)字節(jié)XY,用第X行第Y列的值代替它樱衷,完成字節(jié)代換棋嘲。
行移位:第一行不動,第二行向左移動一位矩桂,第三行向左移動兩位沸移,以此類推。
列混淆:每一列拉出來和一個(gè)44的矩陣相乘侄榴,得到新的一列雹锣。
6. 分組加密
2-DES:
C = EK2(EK1(P))
其中K1,K2為兩個(gè)關(guān)鍵字癞蚕,密文被這兩個(gè)關(guān)鍵字加密兩次蕊爵;3-DES:
- 使用兩個(gè)key:
C = EK1(DK2(EK1(P)))
- 使用三個(gè)key:
C = EK3(DK2(EK1(P)))
分組加密:
- Electronic CodeBook(ECB)電碼本模式
- Cipher Block Chaining(CBC)密文分組鏈接
- Cipher FeedBack(CFB)密文反饋
- Output FeedBack(OFB)輸出反饋
- Counter(CTR)計(jì)數(shù)器
7. Public-Key Cryptography
概念:該加密方法為非對稱加密。對于發(fā)送者和接收者都有兩個(gè)密鑰桦山,分別是公鑰和私鑰攒射。
加密方法:一次完整的加密過程如下
- A使用
A的私鑰
對明文進(jìn)行簽名- A使用
B的公鑰
對明文進(jìn)行加密- B接受密文
- B使用
B的私鑰
對密文進(jìn)行解密- B使用
A的公鑰
對該密文進(jìn)行身份驗(yàn)證
單向陷門函數(shù):
-
單向函數(shù)是一些易于計(jì)算但難于求逆的函數(shù)醋旦。
-
陷門單向函數(shù)就是在已知一些額外信息的情況下易于求逆的單向函數(shù),這些額外信息就是所謂的陷門会放。
8.RSA?
大整數(shù)分解問題:任何一個(gè)整輸都可以分解為素?cái)?shù)的n次方相乘的形式饲齐。
RSA算法描述:
計(jì)算題解題過程:
例題:
練習(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)證機(jī)構(gòu)
安全協(xié)議:
- Secure Socket Layer (SSL)
- Transport Layer Security (TLS)
- Secure Electronic Transaction (SET)