浅析古典密码学(仅作纳新使用)

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

置换密码

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.棋盘密码

【Polybius密码(Polybius Cipher)】
  也称棋盘密码,是利用波利比奥斯方阵(Polybius Square)进行加密的密码方式,产生于公元前两世纪的希腊,相传是世界上最早的一种密码。
  假设我们需要发送明文讯息 “Attack at once”, 用一套秘密混杂的字母表填满波利比奥斯方阵,像是这样:
   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
  i和j视为同一个字,使字母数量符合 5 × 5 格。之所以选择这五个字母,是因为它们译成摩斯密码时不容易混淆,可以降低传输错误的机率。使用这个方格,找出明文字母在这个方格的位置,再以那个字母所在的栏名称和列名称代替这个字母。可将该讯息转换成处理过的分解形式。
  明文:A T T A C K A T O N C E
  密文:AF AD AD AF GF DX AF AD DF FX GF XF
  A,D,F,G,X也可以用数字1,2,3,4,5来代替,这样密文就成了:
  13 12 12 13 43 25 13 12 23 35 43 53

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

它依据一个55的正方形组成的密码表来编写,密码表里排列有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.多表替换

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

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

A -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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

维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密: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.qqxiuzi.cn/bianma/weijiniyamima.php	
详解:https://blog.csdn.net/limisky/article/details/16885959	

7.仿射密码

解码: https://github.com/Widiot/cryptography/blob/master/FirstUnit/Vigenere.java
详解:https://blog.csdn.net/kevin66654/article/details/53898337

博福特密码

解密:https://wishingstarmoye.com/ctf/beaufortcipher
详解:https://www.33iq.com/group/topic/253249/

练习平台

在这里推送几个练习平台,请务必练习,如有不会的题可以在网上搜索其题解(WP)
南邮CTF:
https://cgctf.nuptsast.com/login
实验吧:
http://www.shiyanbar.com/ctf/
Bugku:
https://ctf.bugku.com/
Xctf:
https://adworld.xctf.org.cn/

其他说明

因仅作纳新使用,暂不对较有深度的密码类型做出说明,见谅。以上整理来源于QUST-SEC团队成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值