其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
趣味密码学之四后记:恺撒码补遗

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

上次讲到恺撒码很容易被破解,因此在它的基础上又作出了很多改进。

恺撒码属于字母表的平移变换,其一般加密公式为 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

明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:ejotydinsxchmrwbglqvafkpuz
因为z的编码为26,而k与26互素,所以 f(a)=(26*k) mod 26=26,明文z加密后还是它本身。同理,M(编码为13)也一样。
如果取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

明文:abcdef
密文:ehknqt
这三种方法的解密都很简单,但是都达到了混乱原文的效果。而只要知道密钥得到密码表,解密的方法也很简单。



相关文章

相关软件