古典密码简介

  • Post author:
  • Post category:其他

从密码学发展历程来看,可分为古典密码(以字符为基本加密单元的密码)以及现代密码(以信息块为基本加密单元的密码)两类。而古典密码有着悠久的历史,从古代一直到计算机出现以前,古典密码学主要有两大基本方法:

置换密码(又称易位密码):明文的字母保持相同,但顺序被打乱了。

代替密码:就是将明文的字符替换为密文中的另一种的字符,接收者只要对密文做反向替换就可以恢复出明文。

 

古典密码是密码学的根源,虽然都比较简单而且容易破译,但研究古典密码的设计原理和分析方法对于理解、分析以及设计现代密码技术是十分有益滴^_^

 

一.置换密码

 1.列置换密码(矩阵置换密码)

明文:ming chen jiu dian fa dong fan gong

密钥:yu lan hua

去掉密钥重复字母:yulanh,得出距阵列数为6;将明文按行填充距阵。

得到密钥字母顺序: 653142;

按列(依顺序)写出距阵中的字母。

密文:giffg hddn0 njngn cuaa0 inano meiog

解密:加密的逆过程;

2.周期置换密码

  周期置换密码是将明文串P按固定长度m分组,然后对每组中的子串按1,2,…,m的某个置换重排位置从而得到密文C。其中密钥σ包含分组长度信息。解密时同样对密文C按长度m分组,并按σ的逆置换σ-1把每组子串重新排列位置从而得到明文P。

明文:State Key Laboratory of Networking and Switching

加密密钥:σ=(15623)

明文分为七组:(StateK)(eyLabo)(ratory)(ofNetw)(orking)(andSwi)(tching)

加密变换:密钥里没有4,则第4位保持不变,然后对应的第1位换到第5位,第5位换到第6位,第6位换到第2位….

密文:(aKttSe)(Loyaeb)(tyaorr)(Nwfeot)(kgrion)(dinSaw)(hgcitn)

解密密钥:σ-1 = (13265)

3.栅栏密码

此密码一般适用于较短的密码,原理是字母的错位。操作步骤如下:
this little child is funny(原句)
thislittlechildisfunny(去掉空格)
t i l t l c i d s u n
h s i t e h l i f n y(上下拆开)
tiltlcidsunhsitehlifny(合并)
破译时只要按照相反的步骤来就行了。
另一种栅栏密码的操作步骤如下:
this little child is funny(原句)
thislittlechildisfunny(去掉空格)

thislittlec     hildisfunny(左右拆开)
th
hi
il
sd
li
is
tf
tu
ln
en
cy
thhiilsdliistftulnency(合并)
当用中文的汉语拼音做栅栏密码时十分有趣,可以选择用声母做前排,韵母做后排。例如:
zhong hua ren min gong he guo(原句)
zhonghuarenmingongheguo(去掉空格)
zh h r m g h g
ong ua en in ong e uo
zh in
ong g
h ong
ua h
r e
en g
m uo(上下或左右拆开)
zhhrmghgonguaeninongeuo
zhinongghonguahreengmuo(合并)

二.代替密码

1.凯撒(Caesar)密码

  据记载在罗马帝国时期,凯撒大帝曾经设计过一种简单的移位密码,用于战时通信。这种加密方法就是将明文的字母按照字母顺序,往后依次递推相同的字母,就可以得到加密的密文,而解密的过程正好和加密的过程相反。
例如:明文 battle on Sunday 密文 wvoogz gi Npiyvt (将字母依次前移5位)
  如果我们令 个字母分别对应于整数 ~ , ,则凯撒加密方法实际上是进行了一次数学取模为26的同余运算,即其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也叫密钥。比如:battle on Sunday对应数据序列为020120201205 1514 192114040125 若取密钥k为5时,得密文序列070625251710 2019 240019090604。这样我们也可以用数字来代替字母进行传递信息,也方便用数学变换和计算机编程进行加密与解密。

2.棋盘密码

  棋盘密码通过将26个英文字母设法变成十位数来达到加密的目的。棋盘密码的密钥是一个5X5的棋盘,将26个英文字母放置在里面,其中字母i和j被放在同一个方格中,如下表所示:

  在给定了字母排列结果的基础上,每一个字母都会对应一个数字αβ,其中α是该字母所在行的标号,β是该字母所在列的标号。通过设计的棋盘就可以对英文消息进行加密,如u对应的是22,f对应的是34

3.摩斯密码

  摩斯密码是类似于信号的含义。如果我们在海边,看到远离海滩的水面有一亮一亮的灯光,我们不妨仔细辨识一下。假如我们看到灯光是按照 “短亮 暗 短亮 暗 短亮 暗 长亮 暗 长亮 暗 长亮 暗 短亮 暗 短亮 暗短亮”这个规律来显示的话,那么它就意味是求救信号,SOS。知道为什么吗?对了。“短亮 暗 短亮 暗 短亮 暗”代表信号S,“长亮 暗 长亮 暗长亮 暗”则代表信号O。根据信号规律,得出结论就是SOS!
摩斯密码表:
A . _ M _ _ Y _ . _ _
B _ . . . N _ . Z _ _ . .
C _ . _ . O _ _ _ 1 . _ _ _ _
D _ . . P . _ _ . 2 . . _ _ _
E . Q _ _ . _ 3 . . . _ _
F . . _ . R . _ . 4 . . . . _
G _ _ . S . . . 5 . . . . .
H . . . . T _ 6 _ . . . .
I . . U . . _ 7 _ _ . . .
J . _ _ _ V . . . _ 8 _ _ _ . .
K _ . _ W . _ _ 9 _ _ _ _ .
L . _ . . X _ . . _ 0 _ _ _ _ _

 

4.playfair

它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。
第一步是编制密码表。在这个5*5的密码表中,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。如果密钥过长可占用第二列或行。
如密钥crazy dog,可编制成

C D F M T
R O H N U
A G I ( J ) P V
Z B K Q W
Y E L S X

       
整理明文:
第二步整理明文。将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。
如,communist,应成为co,mx,mu,ni,st。

编写密文:
最后编写密文。对明文加密规则如下:
1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc
2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。
如,依照上表,明文where there is life,there is hope.
可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX
然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY
将密文变成大写,然后几个字母一组排列。
如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY

Playfair解密算法首先将密钥填写在一个5*5的矩阵中(去Q留Z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文。
对密文解密规则如下:
1 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
2 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
3 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
其实就是反其道而行之。

5.单表替换

  将26个英文字母分别替换为对应另一个字母,通信双方均持有一张表,记录着每个字母对应的替换字母,如a-i,b-p,c-t……

  一个人在只有纸和笔的情况下也可以通过穷举法在短时间内破解,这里就不做过多概述了。

6.多表替换

  本人比较熟悉的多表替换技术就是维吉尼亚密码了,此外还有希尔密码,这里就介绍维吉尼亚密码吧。

  

 

  维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:TO BE OR NOT TO BE THAT IS THE QUESTION

  当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:

 

密钥:RELAT IONSR ELATI ONSRE LATIO NSREL

明文:TOBEO RNOTT OBETH ATIST HEQUE STION

密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY

 

此外还有很多古典密码没有介绍到,这里本人只是列举了心中比较典型几种,不足之处还请多多见谅哈~

转载于:https://www.cnblogs.com/RNGorgeous/p/8810271.html