本文主要是介绍趣味密码学之四后记:恺撒码补遗,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上次讲到恺撒码很容易被破解,因此在它的基础上又作出了很多改进。
恺撒码属于字母表的平移变换,其一般加密公式为 f(a)=(a+k) mod n,n为字符集中字母的个数,k的取值范围是1~25。当K=3时,这种变换就是恺撒码。
另一种办法就是改变字母表的顺序,也称为倍模变换,其一般加密公式为f(a)=ak mod n, n为字符集中字母的个数。在这里,k的取值必须与n互素(即最大公约数为1);否则会出现周期性,不同的字符会产生相同的加密结果。
如:k=5、n=26,变换公式为f(a) = (5*a ) mod 26
密文:ejotydinsxchmrwbglqvafkpuz
如果取k=2,k与26不互素,则会出现编码相同的情况。如,f(1)=(1*2) mod 26 =2,f(14)=(14*2) mod 26 =2,? 字母a和n的密文均为b,而且无法通过解密公式确定明文。这样的情况会同样出现在b和o…m和z中,以13为周期重复产生相同的加密结果。
结合上述两种变换,就得到了广义恺撒码的公式,也称为线性变换。f(a)=(a*k1+k2) mod n , n为字符集中字母的个数, k的取值必须与n互素。如k1=3,k2=2,n=26
密文:ehknqt
这篇关于趣味密码学之四后记:恺撒码补遗的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!