古典密码学

古典密码学(Classical Cryptography)

1.古典密码学的特点:

密码算法的安全性基于算法的安全性

加密的算法包括:字母的代换顺序的替换

2.常用古典密码:

2.1凯撒密码 Caesar’s Cipher

英语的26个字母分别用 Z 26 的元素表示。假设密钥是k。

E n c : c = ( m + k ) m o d 26

D e c : m = ( c k ) m o d 26

穷举攻击破译

2.2单字母替换 Mono-alphabetic substitution

常用字母频率:

这里写图片描述

分析字母出现频率破译

2.3仿射密码 Affine Cipher

P = C = Z 26 且K ={ ( a , b ) Z 26 × Z 26 : g c d ( a , 26 ) = 1 }对任意的 K = ( a , b ) , x , y Z 26 ,定义加密变换为:

e k ( x ) = ( a x + b ) m o d 26

解密变换为:

d k ( y ) = a 1 ( y b ) m o d 26

其中 a a 1 m o d 26 = 1 ,1为该代数空间的幺元。

由于在0到15,与26互质的有1,3,5,7,9,11,15,17,19,21,23,25共12个数,所以a一共有12种情况,b有16种情况,所以密钥空间为:

12*26=312

先分析字母出现的频率,试探求解多组a和b,代入验证,得到有意义的语句说明a和b选择正确。

2.4维吉尼亚密码 Vigener

通过将明文轮流循环加密钥得到密文。

破解首先需要确定长度

Kasiski测试法 :搜索长度至少为3的相同密文段,密文段之间间隔的最大公因子很有可能就是密钥的长度。

将密钥的长度从1开始递增,每次对于密文进行分组,计算重合指数,如果接近0.065(0.05就差不多了)则说明这个数字就是密钥的长度。而如果是随机串,则重合指数接近0.038。

确定每一位密钥:

通过密钥将密文分成多组,使用拟重合指数测试法破解每一组对应的密钥。

对于子密文段各个字母的频率进行统计,结合字母频率分布统计表,利用公式计算出 M 0 ,然后对子密文段移位25次,按照同样方法求值。

M 0 M 26 中最接近0.065的数字对应的字母,即为该组的密钥。

猜你喜欢

转载自blog.csdn.net/ljfyyj/article/details/80976787