Play fair密碼
【普萊菲爾密碼加密方法】
普萊菲爾密碼的編寫方法是極為簡(jiǎn)單的,通常可以分為三個(gè)步驟,即編制密碼表、整理明文、編寫譯文,下面我們以明文:pishoupideweinasi和密鑰“culture”為例來(lái)講解。
(1) 編制密碼表
我們需要的是一個(gè)5乘5的方表,而用到的是密鑰“culture”與英文字母表:
Ⅰ整理密鑰字母C U L T U R E,去掉后面重復(fù)的字母以,得到字母串:C U L T R E;
Ⅱ用上一步得到的字母自上而下來(lái)填補(bǔ)5乘5方表的縱列(也可橫排),之后的空白按照相同的順序用字母表中剩余的字母依次填補(bǔ)完整,得到如下的方格,1
這一步需要注意的要點(diǎn):整理密鑰字母時(shí),如果出現(xiàn)z,則需要去除,因?yàn)樵谟⑽睦飠的使用頻率最低,相應(yīng)的如果是德文,則需將i與j當(dāng)作一個(gè)字母來(lái)看待,而法語(yǔ)則去掉w或k。
(2) 整理明文
我們要遵循的原則是“兩個(gè)一組”,得到是若干個(gè)兩兩成對(duì)的字母段,用到的是明文pishoupideweinasi與字母“x”:
Ⅰ將明文兩兩一組按順序排開,得到pi sh ou pi de we in as i
Ⅱ?qū)τ谀┪驳膯蝹€(gè)字母要加上一個(gè)“x”使之成對(duì):pi sh ou pi de we in as ix這一步需要注意的要點(diǎn):對(duì)于相連字母相同者,每個(gè)后面都需要加x,例如tomorrow,需要寫成:to mo rx rx ow
(3) 編寫密文
我們要得到的密文,當(dāng)然,對(duì)于每個(gè)字母對(duì),要嚴(yán)格遵循如下的原則:
1.如果兩個(gè)字母在同一行則要用它右鄰的字母替換,如果已在最右邊,則用該行最左邊的替換,如明文為“ce”,依據(jù)上表,應(yīng)替換為“eg”;
2.如果兩個(gè)字母在同一列則要用它下邊的字母替換,如果已在最下邊,則用該行最上邊的替換,如明文為“oq”,依據(jù)上表,應(yīng)替換為“pm”;
3.如果兩個(gè)字母在不同的行或列,則應(yīng)在密碼表中找兩個(gè)字母使四個(gè)字母組成一個(gè)矩形,明文占據(jù)兩個(gè)頂點(diǎn),需用另外兩個(gè)頂點(diǎn)的字母替換,如明文為“hx”,可以替換為“vj”或“jv”(本例按照橫向替換原則)。
Ⅰ按照上述原則,將明文加以編寫,得到j(luò)o gv ln jo fa bs oh ve wjⅡ?qū)⒌玫降淖帜父臑榇髮懀⑽鍌€(gè)一組列好,得到密碼JOGVL NJOFA BSOHV EWJ
奧騰多夫密碼
每三個(gè)數(shù)字對(duì)應(yīng)密鑰中的一個(gè)詞
密碼本通常是一本隨機(jī)的書 或者報(bào)紙上的文章
第一組數(shù)字是頁(yè)數(shù)
第二組數(shù)字是行數(shù)
第三組數(shù)字是列數(shù)
如11-15-12 指的就是第11頁(yè) 第15行 第12列詞 (也可以說(shuō)是第12個(gè))
ADFGX密碼
A D F G X
A B T A L P
D D H O Z K
F Q F V S N
G G J C U X
X M R E W Y
三分密碼
三分密碼由Felix Delastelle發(fā)明(他也發(fā)明了四方密碼和二分密碼)。二分密碼是二維的,用5×5(或6×6)的矩陣加密,但三分密碼則用3×3×3的。它是第一個(gè)應(yīng)用的三字母替換密碼。
首先隨意制造一個(gè)3個(gè)3×3的Polybius方格替代密碼,包括26個(gè)英文字母和一個(gè)符號(hào)。然后寫出要加密的訊息的三維坐標(biāo)。訊息和坐標(biāo)四個(gè)一列排起,再順序取橫行的數(shù)字,三個(gè)一組分開,將這三個(gè)數(shù)字當(dāng)成坐標(biāo),找出對(duì)應(yīng)的字母,便得到密文。
7 x9 S6 f! f# a1 Z) t% H% Y
二分密碼的做法相近,和后來(lái)出現(xiàn)的ADFGVX密碼差不多。, x; N% u- a8 U3 w
例:加密"HELLO WORLD"
1 1 1 2 2 2 3 3 3
1 l e o n a r d v i
2 c b f g h j k m p
3 q s t u w x y z /
1 2 3 1 2 3 1 2 3
: t5 p. N/ K" N* d1 y; ]# X
然后寫出"HELLO WORLD"的每個(gè)字母的坐標(biāo),先上橫再豎再下橫# R# a4 m: P2 d! A! S% r, }
如下:, N) D* j; G6 I$ V g
H E L L O W O R L D" e9 p( k c- k& x6 q
---------------------------
2 1 1 1 1 2 1 2 1 31 _8 r% U0 \% N- U8 W Y% l1 \ F* a
2 1 1 1 1 3 1 1 1 1
2 2 1 1 3 2 3 3 1 1 v) E( C' k' Y- ]. z, W* K: Y
: |/ i$ @3 a0 s( g
將所得的表格橫著讀出,每三個(gè)數(shù)字一組5 Q$ ?* P, H$ \' G4 P
211 112 121 321 111 311 112 211 323 311
再回頭按坐標(biāo)找出第一個(gè)表中對(duì)應(yīng)字母,即:; ]. `5 [ n0 l+ O' R
# d" y8 ^ h! e' B
211 112 121 321 111 311 112 211 323 311
, X" V1 r4 k" t' K0 ?
N E C K L D E N P D
- a7 P. O8 W+ m
則"HELLO WORLD"的密文即為:NECKLDFNPD
【四方密碼】
四方密碼是一種對(duì)稱式加密法,由法國(guó)人Felix Delastelle(1840年–1902年)發(fā)明。
這種方法將字母兩個(gè)一組,然后采用多字母替換密碼。
四方密碼用4個(gè)5×5的矩陣來(lái)加密。每個(gè)矩陣都有25個(gè)字母(通常會(huì)取消Q或?qū),J視作
同一樣,或改進(jìn)為6×6的矩陣,加入10個(gè)數(shù)字)。
首先選擇兩個(gè)英文字作密匙,例如example和keyword。對(duì)于每一個(gè)密匙,將重復(fù)出現(xiàn)的
字母去除,即example要轉(zhuǎn)成exampl,然后將每個(gè)字母順序放入矩陣,再將余下的字母順
序放入矩陣,便得出加密矩陣。
將這兩個(gè)加密矩陣放在左上角和右下角,余下的兩個(gè)角放a到z順序的矩陣:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
加密的步驟:
兩個(gè)字母一組地分開訊息:(例如hello world變成he ll ow or ld)
找出第一個(gè)字母在左上角矩陣的位置
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
同樣道理,找第二個(gè)字母在右下角矩陣的位置:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
找右上角矩陣中,和第一個(gè)字母同行,第二個(gè)字母同列的字母:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
找左下角矩陣中,和第一個(gè)字母同列,第二個(gè)字母同行的字母:
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z
K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
這兩個(gè)字母就是加密過(guò)的訊息。
hello world的加密結(jié)果:
he lp me ob iw an ke no bi
FY GM KY HO BX MF KK KI MD
【二方密碼】
二方密碼比四方密碼用更少的矩陣。
得出加密矩陣的方法和四方密碼一樣。
例如用「example」和「keyword」作密匙,加密lp。首先找出第一個(gè)字母(L)在上方
矩陣的位置,再找出第二個(gè)字母(D)在下方矩陣的位置:
E X A M P
L B C D F
G H I J K
N O R S T
U V W Y Z
K E Y W O
R D A B C
F G H I J
L M N P S
T U V X Z
在上方矩陣找第一個(gè)字母同行,第二個(gè)字母同列的字母;在下方矩陣找第一個(gè)字母同列,
第二個(gè)字母同行的字母,那兩個(gè)字母就是加密的結(jié)果:
E X A M P
L B C D F
G H I J K
N O R S T
U V W Y Z
K E Y W O
R D A B C
F G H I J
L M N P S
T U V X Z
help me的加密結(jié)果:
he lp me
HE DL XW
這種加密法的弱點(diǎn)是若兩個(gè)字同列,便采用原來(lái)的字母,例如he便加密作HE。約有二成的內(nèi)
容都因此而暴露
元音密碼表:0 g6 P0 a' `8 ^ l
A B C D E F G H I J K L M N
1 11 12 13 2 21 22 23 3 31 32 33 34 35
O P Q R S T U V W X Y Z
4 41 42 43 44 45 5 51 52 53 54 55
'比如明文是::
When in Rome,do as the Romans do.(入鄉(xiāng)隨俗)
根據(jù)密碼表加密為(注意,數(shù)字之間加點(diǎn)):
52.23.2.35.3.35.43.4.34.2.13.4.1.44.45.2.43.4.34.1.35.44.13.4
韻母聲母密碼(原創(chuàng))
1 2 3 4 5
1 b p m f d
2 t n l g k
3 h % j q x
4 zh ch sh r z
5 c s y w &
1 2 3 4 5 6
1 a o e i u v
2 ai ei ui @ ao A
3 ou iu ie ve er B
4 an en in # un C
5 ang eng ! ing ong D
莫爾斯電碼
a *- b -*** c -*-* d -** e * f **-* g --* h **** i ** j *--- k -*-
l *-** m -- n -* o --- p *--* q --*- r *-* s *** t - u **- v ***-
w *-- x -**- y -*-- z --** 1 *----2 **--- 3 ***-- 4 ****- 5 *****
6 -**** 7 --*** 8 ---** 9 ----* 0 - ----
. *-*-*- ' *----* ? **--** ( -*--*- ) -*--*- @ *--*-* — -***-
。*-*-*- , --**-- : ---*** | *----* _/- -****- ? *--*-*
end ***-*- start -*-*-
培根密碼
A = aaaaa E = aabaa I/J= abaaa N = abbaa R = baaaa W = babaa
B = aaaab F = aabab K = abaab O = abbab S = baaab X = babab
C = aaaba G = aabba L = ababa P = abbba T = baaba Y = babba
D = aaabb H = aabbb M = ababb Q = abbbb U/V= baabb Z = babbb
加密規(guī)則:(1)A-M=>a,也就是說(shuō)A到M的所有字母都替換成a.
N-Z=>b,也就是說(shuō)N到Z的所有字母都替換成b.
(2)A-M<=a,也就是說(shuō)a可以替換成A-M中的任何一個(gè)字母
N-Z<=b,也就是說(shuō)a可以替換成N-Z中的任何一個(gè)字母
維吉尼亞密碼表
A B C D E F G H I J K L M N O P Q R S T U V W X Y z
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
維德里亞密碼
題目如下
密文: T
密鑰:SKFK
提示:
26個(gè)英文字母
公式:A+B=C
A代表明文
B代表密鑰
C代表密文
答案:根據(jù)26個(gè)英文字母表a對(duì)應(yīng)標(biāo)上數(shù)字1,b表上數(shù)字2,對(duì)照得出
T=20
S=19
K=11
F=6
K=11
根據(jù)公式:A+B=C
題目已知密文為T,密鑰為SKFK,求得明文
列出 C(密文)-B(密鑰)=A(明文)
將數(shù)字代入推導(dǎo)出的公式
T-S=20-19=1
T-K=20-11=9
T-F=20-6=14
T-K=20-11=9
根據(jù)得出數(shù)字1.9.14.9對(duì)照26個(gè)英文字母表得出
aini
愛(ài)你
博福特密碼是按mod q減法運(yùn)算的一種周期代替密碼。即
ci+td=δi(mi+td)≡(ki-mi+td)(mod q)
所以,它和維吉尼亞密碼類似,以ki為密鑰的代替表是密文字母表為英文字母表逆序排列進(jìn)行循環(huán)右移ki+1次形成的。例如,若ki=3(相當(dāng)于字母D),則明文和密文的對(duì)應(yīng)關(guān)系如下:
明文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D C B A Z Y X W V U T S R Q P O N M L K J I H G F E
顯然,博福特密碼的解密變換為
mi+td≡δi(ci+td)≡(ki-ci+td)(modq)
因此,博福特密碼的解密變換與加密變換相同。按博福特密碼,以密鑰ki加密相當(dāng)于按下式的維吉尼亞加密:
ci+td≡[(q-1)-mi+td](modq)
若按下式加密:
ci+td≡(mi+td-ki)(modq)
就得到變異的博福特密碼,相應(yīng)代替表示將明文字母表循環(huán)右移ki次而成。由于循環(huán)右移ki次等于循環(huán)左移(q-ki)次,即式ci+td≡(mi+td-ki)(modq)等價(jià)于以(q-ki)為密鑰的維吉尼亞密碼。所以維吉尼亞密碼和變異的博福特密碼互為逆變換,若一個(gè)是加密運(yùn)算,則另一個(gè)就是解密運(yùn)算。
示例
例如,明文的第一個(gè)字母為D,則先在表格中找到第D列。由于密鑰的第一個(gè)字母為F,于是D列從上往下找到F。這一F對(duì)應(yīng)的行號(hào)為C,因而C便是密文的第一個(gè)字母。以此類推可以得到密文。 以下便是一個(gè)密鑰為FORTIFICATION時(shí)的例子:
Defend the east wall of the castle去空格,
明文:DEFENDTHEEASTWALLOFTHECASTLE
密鑰:FORTIFICATIONFORTIFICATIONFO
密文:CKMPVCPVWPIWUJOGIUAPVWRIWUUK
符號(hào)注釋:
ki:密鑰 mi:明文 ci:密文
關(guān)鍵詞凱撒
這個(gè)加密方式是從凱撒位移衍生出來(lái)的,書中的名稱是“關(guān)鍵詞凱撒”。關(guān)鍵詞中不能有重復(fù)的字母,就算有也要把重復(fù)的字母刪去。
舉個(gè)例子:
以code為關(guān)鍵詞:
原字母表:a b c d e f g h i j k l m n o p q r s t u v w x y z
加密密碼表:c o d e f g h i j k l m n p q r s t u v w x y z a b
這種方法即用把關(guān)鍵詞寫在前面,在按關(guān)鍵詞的最后一個(gè)字母搞凱撒位移。
若以"mima"以為關(guān)鍵詞,則關(guān)鍵詞要變成"mia"(去掉第二個(gè)重復(fù)的"m"),則:
原字母表:a b c d e f g h i j k l m n o p q r s t u v w x y z
加密密碼表:m i a b c d e f g h j k l n o p q r s t u v w x y z
這個(gè)例子恰好也表現(xiàn)出了一個(gè)巧合,即從n開始后面的加密字母和原始字母相同,這種情況下CM可以選擇換一個(gè)關(guān)鍵詞加密,或者仍用這個(gè)關(guān)鍵詞(這種情況可以迷惑CB放棄這一個(gè)正確的關(guān)鍵詞)。
確定關(guān)鍵詞做凱撒位移時(shí),已在關(guān)鍵詞中出現(xiàn)的字母不可以再次出現(xiàn),不然加密密碼表中字母的數(shù)目將多于原字母表。
密鑰柵欄
密鑰柵欄這個(gè)加密方式是從傳統(tǒng)柵欄衍生出來(lái)的。
首先是確定密鑰,密鑰的字母數(shù)即是格子的列數(shù)。將密鑰中的字母按字母表中的順序
編號(hào)即得到每一列的序號(hào),如果相同的字母出現(xiàn)超過(guò)2次,先編從左到右第一個(gè)字母
的號(hào),再編第二個(gè),以此類推。
以happy new year為要加密的原文為例:
1.若以cipher為密鑰,則密鑰編號(hào)為145326,在“格子”上方先寫下密鑰編號(hào)(密鑰
可寫可不寫),再按傳統(tǒng)柵欄編碼方式“填格子”,即
1 4 5 3 2 6
h a p p y n
e w y e a r
接下來(lái)按照每一列的編號(hào)順序依次抄下每一列,即:
heyapeawpynr,編碼完成。
2.若以mima為密鑰,則密鑰編號(hào)為3241,在“格子”上方先寫下密鑰編號(hào)(密鑰可寫
可不寫),再按傳統(tǒng)柵欄編碼方式“填格子”,即:
3 2 4 1
h a p p
y n e w
y e a r
接下來(lái)按照每一列的編號(hào)順序依次抄下每一列,即:
pwranehyypea,編碼完成
PS:①編號(hào)是按在字母表里出現(xiàn)的順序
②字母不夠就留空格
Kryptos密碼
標(biāo)準(zhǔn)字母表:|A|B|C|D|E|F|G|H|I| J| K| L| M| N| O| P| Q| R| S| T| U| V| W| X| Y| Z|
變換字母表:|K|R|Y|P|T|O|S|A|B| C| D| E| F| G| H| I| J| L| M| N| Q| U| V| W| X| Z|
數(shù)字代碼表:|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|
密鑰:PALIMPSEST (重寫本)
解法,以第一行為例:
EMUFPHZLRFAXYUSDJKZLDKRNSHGNFIVJ
首先把密鑰PALIMPSEST和密文對(duì)照“變換字母表”轉(zhuǎn)換為數(shù)字:
|P|A| L| I| M|P|S| E|S|T|
|4|8|18|16|19|4|7|12|7|5|
| E| M| U| F|P| H| Z| L|R| F|A| X|Y| U|S| D| J| K|Z| L| D|K|R| N|S| H| G| N| F| I| V| J|
|12|19|22|13|4|15|26|18|2|13|8|25|3|22|7|11|17|1|26|18|11|1|2|20|7|15|14|20|13|16|23|17|
把密鑰重復(fù)幾次,弄成和密文相等的長(zhǎng)度:
密鑰:| 4| 8|18|16|19| 4| 7|12|7| 5|4| 8|18|16|19| 4| 7|12| 7| 5| 4|8|18|16|19| 4| 7|12| 7| 5| 4| 8|
密文:|12|19|22|13| 4|15|26|18|2|13|8|25| 3|22| 7|11|17| 1|26|18|11|1| 2|20| 7|15|14|20|13|16|23|17|
利用標(biāo)準(zhǔn)的解維吉尼亞密碼算法:把每一列的數(shù)字相減(如果得負(fù)值,就用26加上這個(gè)值),然后再加1。
公式為:[26 + (密文 - 密鑰)] Mod 26 + 1
第一列:12-4+1=9;第二列:19-8+1=12;第三列:22-18+1=5;第四列:26+(13-16)+1=24;
第五列:26+(4-19)+1=12;第六列:15-4+1=12;第七列:26-7+1=20 ... ...
解出明文數(shù)字表,再對(duì)照“變換字母表”把數(shù)字轉(zhuǎn)換為字母:
明文數(shù)字:|9|12|5|24|12|12|20|7|22|9|5|18|12|7|15|8|11|16|20|14|8|20|11|5|15|12|8|9|7|12|20|10|
明文字母:|B| E|T| W| E| E| N|S| U|B|T| L| E|S| H|A| D| I| N| G|A| N| D|T| H| E|A|B|S| E| N| C|
因此原文就是:
Between subtle shading and the absenc |