《Column-permutation-cipher-的编程实现.doc》由会员分享,可在线阅读,更多相关《Column-permutation-cipher-的编程实现.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateColumn-permutation-cipher-的编程实现现代密码学与加解密技术实验报告现代密码学与加解密技术实验报告 实验名称Column permutation cipher 的编程实现班 级学 号姓 名日 期成 绩评 阅 人软件学院-一、 实验目的与意义编程(建议使用C语言)实现古典密码体制中的Column permutation密码,并加/解密一个字符串或
2、文件.二、 实验环境Win7,vs2011三、 实验的预习内容 列置换的加密原理是,明文按行填写在一个矩阵中,而密文则是以预订的顺序按列读取生成的。如果矩阵是4行5列,那么短语“ENCRYPTION ALGORITHMS”可以如下写入该矩阵中按一定的顺序读取生成密文对于这个例子如果读取顺序是4 1 2 3那么密文就是“RILIS EYOGT NPNOH CTARM”这种方法要求填满矩阵,因此字母不够的时候就得填充X或Q等无效字符四、 实验数据与实验结果五、 实验用程序清单#include stdafx.h#includestring.h#define max 100void jiami(cha
3、r plantextmax,char keymax,char ciphermax,char plantext2max)int i,m,k,l,ml,mk;char copymax;l=strlen(key);k=strlen(plantext);int bmax;for(i=0;il;i+)/复制key数组copyi=keyi;for(i=0;il;i+)printf(%c,copyi);printf(n);for(i=0;il;i+)/对关键词数组进行升序排序int j;char temp;for(j=0;jcopyj+1)temp=copyj;copyj=copyj+1;copyj+1=t
4、emp;for(i=0;il;i+)printf(%c,copyi);printf(n);for(i=0;il;i+)/获取读取序列,序列存储在bl中int j;int index=0;for(j=0;jl;j+)if(copyi=keyj)index=j;bi=index;for(i=0;il;i+)printf(%d,bi);printf(n);i=0;for(m=k%l;ml;m+)/在明文最后补qplantextk+i=q;i+;ml=k+i;mk=ml;for(i=0;iml;i+)printf(%c,plantexti);printf(n);m=(k+l-1)/l;printf(%
5、dn,m);ml=0;for(i=0;il;i+)/填充密文数组int j;for(j=0;jm;j+)cipherml=plantextj*l+bi;/cipher的前m个数对应明文矩阵的bi列ml+;printf(%dn,ml);printf(密文为:);for(i=0;iml;i+)/输出密文printf(%c,cipheri);printf(n);ml=0;for(i=0;il;i+)/填充解密数组int j;for(j=0;jm;j+)plantext2j*l+bi=cipherml;/cipher的前m个数对应明文矩阵的bi列ml+;printf(原文为:);for(i=0;iml
6、;i+)/输出原文printf(%c,plantext2i);printf(n);int _tmain(int argc, _TCHAR* argv)char plantext1max,plantext2max,ciphermax,keymax;printf(请输入明文n);scanf(%s,plantext1);printf(请输入关键词n);scanf(%s,key);jiami(plantext1,key,cipher,plantext2);return 0;六、 思考题1. Column permutation cipher 的原理是什么?明文按行填写在一个矩阵中,密文是按照预定顺序按列读取产生。2. 给定关键字为“experiment”,加密矩阵将包括几列,以及列置换的次序是什么?10列 置换顺序为1.10.7.2.8.4.5.3.6.9。3. 简述对Column permutation cipher的分析方法。a.确定列的可能大小;b.确定正确的矩形; C.还原列的顺序4. Column permutation cipher的安全性增强方法是什么?进行双重换位加密,先用列换位法将明文加密,然后再次利用列换位法将第一次换位加密的密文加密。这两次换位所使用的关键词可以相同。经过两次换位后,明文字母的位置完全被打乱了。