阅读(3098) (11)

密码学 仿射密码

2020-07-28 17:04:50 更新

简介

当a=1,仿射加密为凯撒密码

仿射密码为单表加密的一种,字母系统中所有字母都藉一简单数学方程加密,对应至数值,或转回字母。

仿射密码是一种替换密码。它是一个字母对一个字母的。它的加密函数是,其中a和m互质,m是字母的数目。 那么为什么 仿射变换密码c=(ap+b)mod26,a为什么与m互素 如果a=3,m=26 c就有可能=0得不到值,无法解密 加密函数是e(x)=(ax+b)mod m 解码函数是,其中是a在群的乘法逆元。

代码实现

## 列印仿射密码的字母表。# a必须与m互质
    def affine(a, b):
        for i in range(26):
        print chr(i+65) + ": " + chr(((a*i+b)%26)+65)# 调用函数的例子
    affine(5, 8)

缺点

因为仿射密码仍为单字母表密码, 其依旧保留了该类别加密之弱处。当a=1,仿射加密为凯撒密码,因该加密方程可简化为线性移动。 考虑加密英文。(即:m=26),不计26与凯撒密码,总共有286非易仿射密码。此数值是由于小于26之数中有12数与26互质。a 的每个值可有26互异之加法移动(b之值);因此,共有 12*26 或 312 可能之关键值。 因为密码缺少复杂性,根据柯克霍夫原则,这套系统是不安全的。 此密码之首要弱处为,如果密码学家可发现(如频率分析, 暴力破解, 臆测或任何其他方法) 加密文件两字元之原文,则关键值可透过解一方程组得到。 由于我们知道a及m互质,这个事实可被用于快速破解密码。 仿射密码中同种的转换使用于线性虚拟随机产生器, 为虚拟随机数产生器其中一种。 此产生器不为安全加密虚拟随机数产生器,因仿射密码不安全。