一、凱撒密碼
已知最早的密碼,將字母表的每個字母用之后的第3個字母來代換(循環代換)。
由於以下三個特征導致可以輕易被窮舉攻擊分析方法破解。
1、已知加密和解密算法;2、密鑰空間過小;3、明文所用語言已知,且意義易於識別。
為改善密鑰空間過小的問題,便發展成單表代換密碼。
二、單表代換密碼
允許字母表任意代換,使得密鑰空間由25種可能性急劇增長到26!種可能(大於4×1026)。
然而,由於密文保留了原始字母使用頻率的統計學特征,因而很容易被破解。
為了盡量消除密文中殘留的語法模式和結構,又發展成兩種路子,一是對明文中多個字母一起加密,另一種是采用多表代換密碼。
三、Playfair密碼--最著名的多表代換密碼
把明文中的雙字母音節作為一個單元進行兩兩代換。在19世紀發揮了重要作用,一戰中被攻破。
Playfair算法基於一個由密鑰詞組成的5×5字母矩陣(字母I和J當做一個字母)。選擇好密鑰詞后,首先將密鑰次詞從左到右、從上至下填在矩陣格子中,再將剩余字母按字母順序依次填滿格子。
如使用china作為秘鑰詞,可得如下矩陣:
對明文按如下規則一次加密兩個字母
1、如果該字母對的兩個字母相同,則在它們之間插入一個填充字母,比如x。例如:ballon先把它變成ba lx lo on。
2、字母對落在同一行,則向右循環代換,如ca變成hc。
3、字母對落在同一列,則向下循環代換,如cv變成bc。
4、其他情況則代換為與該字母同行,另一字母同列的字母。如dt變成fr。
以上算法使得對單個字母的判斷變得困難許多。然而由於它的密文仍然保留了明文語言的結構,因而仍可破解。
四、Hill密碼-多表代換密碼
采用m階可逆矩陣(等效於m個線性等式)對m個連續的明文字母(轉換成數字)進行加密。
如
同playfair相比,Hill的優點是完全屏蔽了字母(小於m-1個)頻率特性,足以對抗唯密文攻擊,然而卻很容易被已知明文攻擊破解。
五、Vigenere密碼-playfair密碼改進
構造一個26×26的巨大字母矩陣
設置一個密鑰詞,如china。加密過程:在矩陣中,以密鑰和明文字母分別作為橫縱坐標,那個位置的字母作為密文。
由於每個明文字母對應着多個密文字母,因此字母出現的頻率被隱蔽了,不過並非所有的明文結構信息都被隱蔽了,它依賴於所用密鑰詞的長度,實際相當於密鑰長度N個單表代換。為了增大破譯的難度,只有盡量使得密鑰詞的長度盡可能地長。
將該密碼體制略作改變,使運算基於二進制數據而非字母,則是vernam密碼。該體制可以簡明地表述為:
ci=pi⊕ki Ci 密文第i個二進制 Pi明文的第i個二進制 Ki密鑰的第i個二進制
對Vernam密碼的改進就是著名的一次一密,這是不可攻破的密碼體制。
六、一次一密
一次一密其實就是使用和消息一樣長且無重復的隨機密鑰來加密信息,由於密鑰的產生與明文沒有任何統計關系,因而無法攻破。
然而這種體制也存在着兩個基本難點:1、產生大規模的隨機密鑰很困難2、更令人擔憂的是密鑰的分配與保護。
由於這些困難,實際應用中很少用一次一密