实现单表代换加解密并对其攻击

实现单表代换加解密并对其攻击

ID:1199244

大小:493.04 KB

页数:8页

时间:2017-11-08

实现单表代换加解密并对其攻击_第1页
实现单表代换加解密并对其攻击_第2页
实现单表代换加解密并对其攻击_第3页
实现单表代换加解密并对其攻击_第4页
实现单表代换加解密并对其攻击_第5页
资源描述:

《实现单表代换加解密并对其攻击》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、对单表代换加密算法的实现和攻击——PB09210277阮琪森一、单表代换加密算法的实现1.对单表代换加密算法的理解。单表代换加密算法是传统对称加密算法的一种,它主要是通过输入的密钥建立一个明文字符和密文字符的映射表来实现加密。它的密钥空间为26!,因此它相对于Caesar密码在抗穷举攻击方面有了很大的改进。但是在抗频率统计攻击方面就显得很脆弱,只要密文的长度足够,就可以轻易地进行唯密文攻击。2.单表代换加密算法的设计。明文plaintext密文ciphertext加密代换解密代换建立代换表建立代换表密钥检查明文plaintext密钥key密文ciphertex

2、t密钥key代表代换解密算法设计单表代换加密算法设计如上图所示,加密者先输入密钥key,用算法检查key是否符合规范,比如说不能重复,而且密钥要有26个字符。然后根据密钥,把密钥中的字符和明文中存在的字符26个字母一一对应起来,即建立代换表。然后输入明文plaintext,利用代换表把明文中的字母代换成代换表中相应的字母,从而生成密文。解密时,输入密钥建立代换表,然后像加密一样,把密文中的字母代换成代换表中相应的字母,从而再现明文。3.程序设计及实现。程序设计中对输入变量的要求:密钥key:是26个英文字母的排列,明文plaintext:要求明文中只能有26个

3、字母出现,不能有其他符号包括空格,大小写不限,长度不限,可从键盘输入,也可从txt文件读入。密文ciphertext:全部用大写字母,只能有26个字母出现,不能有其他符号包括空格,长度不限,可从键盘输入,也可从txt文件读入。intmain(intargc,char*argv[])main()为主函数,为程序入口,负责让用户选择加密/解密功能;intEncryption(void)Encryption()为加密子函数,负责让用户输入密钥key和明文plaintext,并调用子函数check()对密钥进行检查。然后用密钥建立代换表replace,最后用代换表对明

4、文进行加密并输出。输出有两种方式,一是直接显示在屏幕上,二是除了显示在屏幕上以外还输出到用户指定的文件中。intDecryption(void)Decryption()和加密一样,根据输入的密钥和密文进行解密。具体的程序源代码见代码文件:encryption.cpp1.程序运行。(1)选择加密功能,输入密钥:qwertyuiopasdfghjklzxcvbnm,选择从文件输入明文,输入保存明文的文件名:plaintext.txt,输入保存密文的文件名:ciphertext.txt。运行结果如下图所示:加密所得密文如下:(1)选择解密功能,输入密钥:qwerty

5、uiopasdfghjklzxcvbnm,选择从文件读入密文,输入保存密文的文件名:ciphertext.txt,输入保存解密所得明文的文件名:decryption.txt。运行结果如下:解密所得明文如下:一、对单表代换密码进行攻击。1.频率统计攻击方式的理解。频率统计攻击就是统计密文中各个字符出现的相对概率,然后和自然语言中各个字符出现的概率进行对比,由此推断出各个字符的明密文对应关系。这一方法对于破译由单表代换加密得来的密文很有效。但它也有局限性,就是当密文较短的时候,很难准确地判断出明密文对应关系。2.自然语言中各个字母出现概率的分析和“可能明文”可能性

6、的理解。图1.自然语言中各个英文字母出现概率统计图根据上图可知,由于{e,t,a,o}的频率无论是和其它的比较还是它们相互之间比较,差距都很大,因此在密文长度有限的情况下也能轻易地确定出相应明密文字符的对应关系。剩下的字母中又可以分为5组,分别是{i,n,s,h,r}、{d,l}、{c,u,m,w,f,g,y,p}、{b,v,k}、{j,x,q,z}这五组相互之间的差距相对它们的频率来说都很大,而内部各个字符之间差距相对它们的频率来说较小。因此统计出密文各个字符的概率后可以较为容易地区分出相应的字符对应的组别。以上这些,可以在设计程序的时候考虑进去以破译出可能

7、性更大的明文。可能明文在本次程序设计中理解成为程序破译出来的明文,它与实际明文中的字符的差距越小,表明它的可能性就越大,也就是说可能明文中某一位置的字符与实际明文中对应位置的字符相同,而这样的位置越多,这一个可能明文的可能性就越大。按照以上的想法,在程序设计过程中就应该优先把频率大的字母正确地破译出来。1.程序设计的主要算法的思想。在本程序的设计中面临的主要问题时,怎么使得可能性大的可能明文尽量地包含在输出的明文当中。本程序中,把由密文统计的字符按其频率由大到小排序。自然语言中的字母也按频率由大到小排序。那么在第i位的明文字符就对应第i位的密文字符,构成了一个

8、代换表,由这个代换表破译出来的明文的可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。