1.置换密码

//加密
把明文字母重新排序
明文:MING CHEN WU DIAN FA DONG FAN GONG明晨五点发动反攻
密文:GONG NAFG NODA FNAI DUWN EHCG NIM

2.代替密码

2.1单表代替密码

2.1.1加法密码

一种简单的替代密码。密钥域很小,易受使用穷举密钥搜索的纯密文攻击。凯撒密码就是一种典型的加法密码,基本思想是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为3时,所有的字母A将被替换成D,B变成E,

2.1.2乘法密码

j=ik(mod n) ,gcd(k,n)=1,进而有i=jk(modn),密码才能正确解密。

乘法密码也称采样密码,因为密文字母表是将明文字母按照下标每隔k位取出一个字母排列而成。

例如对26个字母生成密码表(下标由0开始,0-25)

取k=9

明文字母  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

数组下标  0 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

密文字母  a j s  b k  t  c  l  u  d  m  v  e  n  w  f  o  x  g  p  y  h  q  z  i  r

数组下标  0 9 18 1 10 19 2  11 20 3  12 21 4  13 22 5  14 23 6  15 24 7  16 25 8  17

关于求k逆元

欧拉定理(费马小定理)欧拉定理:

若a与n互质,那么有aφ(n)≡1(mod n)

则a-1 =a(φ(n)-1) (mod n)

2.1.3仿射密码

加法密码和乘法密码的结合

仿射密码是一种替换密码。它是一个字母对一个字母的。它的加密函数是

【密码学】古典密码_多表代替密码

其中a和m​互质​,m是字母的数目。解码函数是

【密码学】古典密码_多表代替密码_02

,其中a-1是a在Zm群的​乘法逆元​

2.1.4密钥词语代替密码

//加密
明文:MING CHEN WU DIAN FA DONG FAN GONG明晨五点发动反攻
数字序列:653142
矩阵:MINGCH
ENWUDI
ANFADO
NGFANG
ONG$$$(使用$填充)
密文:GUAA$HIOG$NWFFGCDDN$MEANO
可以用词语作为密钥,去掉重复的字母,按照字母表给剩余的字母1排序
例如:YU LAN HUA(玉兰花)
去掉重复的:YULANH
在字母表中的先后顺序:653142

//解密
解密过程即按照密钥所示的长度顺序恢复出矩阵,再按行读取即可。
密文:GUAA$ HIOG$ NWFFG CDDN$ MEANO
数字序列:653142
矩阵:MINGCH
ENWUDI
ANFADO
NGFANG
ONG$$$
明文:MINGCHENWUDIANFADONGFANGONG

2.2多表代替密码

最著名的多表代替密码:Vigenre密码

加密方法:根据密钥来决定用哪一行的密表来进行替换。

例如:明文是D  ;密钥是C ;那么就在C对应的密表中找D对应的密文F

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

2.3多名代替密码

多名代替密码是指映射一对多,每个明文字母可以加密成多个密文字母,是一个安全性较高的密码。

明文:DATE TIME
密文:40 16 25 2 86 4 10 15(完全随机)

多名密码字母表:

【密码学】古典密码_单表代替密码_03

3.代数密码

Vernam加密法也称一次一密(One-Time-Pad),用随机的非重复的字符集合作为输出密文.这里最重要的是,一旦使用了变换的输入密文,就不再在任何其他消息中使用这个输入密文(因此是一次性的).输入密文的长度等于原消息明文的长度.

以下是主要步骤.
1.按递增顺序把每个明文字母作为一个数字,A=0,B=1等等.
2.对输入明文中每一个字母做相同的处理.
3.将明文中的每个字母与密钥中的相应字母相加.
4.如果得到的和大于26,则从中减去26.
5.将和转化为字母,从而得到密文.

假设对明文消息HOW ARE YOU进行Verman加密,
一次性密钥为NCBTZQARX得到的密文消息UQXTUYFR.

明文 H O W A R E Y O U
7 14 22 0 17 4 24 14 20

密钥 N C B T Z Q A R X
13 2 1 19 25 16 0 17 23

初始和 20 16 23 19 42 20 24 31 43

大于25则减去26

20 16 23 19 16 20 24 5 17

密文 U Q X T Q U Y F R