簡單代替密碼
簡單代替密碼就是將明文字母表肘中的每個字母用密文字母表C中的相應字母來代替。這一類密碼包括移位密碼、乘數密碼、仿射密碼、多項式代替密碼以及密鑰短語密碼等。加密前一般首先要對字母表中的每個字母按照其位置進行編號,如用0,1,2,…,25分別表示英文字母a,b,c,…,z。
(1)移位密碼。將明文字母表M的字母右移k個位置並對明文字母表長度q取模得到密文字母,是最簡單的一類代替密碼,其加密變換可表示為:,解密變換為:,其中q為字母表M的長度,m為明文字元在字母表M中的位置,c為密文字母在字母表C中的位置。移位密碼就是對英文26個字母進行移位代替的密碼,其中q=26。這種密碼又被稱為凱撒密碼,因為古羅馬的凱撒曾使用過k=3時的這種密碼。例如,使用凱撒密碼加密,可將明文university加密成密文qlyhuvlwb。
(2)乘數密碼。將明文字母乘以密鑰k並對q取模得到密文字母。加密過程可表示為:
其中k和q為互素的,這樣字母表中的字母會產生一個複雜的剩餘集合。若k和q不互素,則會有一些明文字母被加密成相同的密文字母,而且不是所有的字母都會出現在密文字母表中。
(3)仿射密碼。明文字母經過線性變換得到密文字母,加密的形式為:
其中要求和q是互素的,理由同上。
簡單代替密碼由於使用從明文到密文的單一映射,所以明文中單字母出現頻率分布與密文中相同,可以很容易地通過使用字母頻率分析法進行破譯。
多名或同音代替密碼
在同音代替中,一個明文字母表的字母a,可以變換為若干個密文字母,稱為同音字母,因此,從明文到密文的映射的形式是,其中A,C分別為明文和密文的字母表。
例:假定一個同音代替密碼的密鑰是一段短文,該文及其中各個單詞的編號,如下所示:
(1)Canada’S large land mass and
(6)Scattered population make efficient communication
(11)a necessity.Extensive railway,road
(16)and other transportation systems,as
(21)well as telephone,telegraph,and
(26)cablenetworks,have helped to
(31)link communities and have played
(36)a vital part in the
(41)country’s development for future
在上表中,每一個單詞的首字母都和一個數字對應,例如字母C與數字1,10,26,32,4l對應;字母M和數字4,8對應等,加密時可以用與字母對應的任何一個數字代替字母,例如,如果明文為I Love her forever的密文可能是:
39 2 17 37 9 28 9 14 43 17 14 13 37 13 14
多表代替密碼
大多數多表代替密碼是周期代替密碼,當周期為1時,就是單表代替密碼。多表代替密碼的種類很多,這裡只介紹其中的Vigenere密碼和遊動鑰密碼。
在Vigenere密碼中,用戶鑰是一個有限序列,我們可以通過周期性(周期為d)將k擴展為無限序列,其中Ki=K(i mod d),1≤i≤,從而得到工作鑰。
如果用Φ和θ分別表示密文和明文字母,則Vigenere密碼的變換公式為:
Φ≡()(mod n)
該密碼體制有一個參數n。在加解密時,同樣把英文字母映射為0~25的數字再進行運算,並按凡個字母一組進行變換。明文空間、密文空間及密鑰空間都是長度為n的英文字母串的集合。
多字母代替密碼
明文中的字元塊成組被加密,這裡介紹一種第一次世界大戰使用過的二字母組代替密碼(Play fair密碼)、它的密鑰是由25個英文字母(J被除去)組成的五階方陣。
每一對明文字母和,都根據以下5條規則進行加密:
(1)若和在密鑰方陣中的同一行,則密文字母和分別是和右邊字母(第一行看作在第五行的下邊)。
(2)若和在同一列,則和分別是和右邊的字母(第一行看作為第五行的下邊)。
(3)若和在密鑰方陣中的不同行和列,密文字母和分別是以和為頂點組成的長方形中的另兩個頂點,其中和、和分別在同一行。
(4)若=,則在和之間插進一個無效字母,例如X。
(5)若明文信息共有奇數個字母,則在明文末尾附加一個無效字母。