1.置换密码
//加密
把明文字母重新排序
明文:MING CHEN WU DIAN FA DONG FAN GONG明晨五点发动反攻
密文:GONG NAFG NODA FNAI DUWN EHCG NIM
1.
2.
3.
4.
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是字母的数目。解码函数是
,其中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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
//解密
解密过程即按照密钥所示的长度顺序恢复出矩阵,再按行读取即可。
密文:GUAA$ HIOG$ NWFFG CDDN$ MEANO
数字序列:653142
矩阵:MINGCH
ENWUDI
ANFADO
NGFANG
ONG$$$
明文:MINGCHENWUDIANFADONGFANGONG
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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(完全随机)
1.
2.
多名密码字母表:
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