古典密码学(Classical Cryptography)

1.古典密码学的特点:

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

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

2.常用古典密码:

2.1凯撒密码 Caesar’s Cipher

英语的26个字母分别用Z26的元素表示。假设**是k。

Enc:c=(m+k)mod26

Dec:m=(ck)mod26

穷举攻击破译

2.2单字母替换 Mono-alphabetic substitution

常用字母频率:

古典密码学

分析字母出现频率破译

2.3仿射密码 Affine Cipher

P=C=Z26且K ={(a,b)Z26×Z26:gcd(a,26)=1}对任意的K=(a,b),x,yZ26,定义加密变换为:

ek(x)=(ax+b)mod26

解密变换为:

dk(y)=a1(yb)mod26

其中 aa1mod26=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。

确定每一位**:

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

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

M0M26中最接近0.065的数字对应的字母,即为该组的**。

相关文章: