


已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.;.一、实验室名称:实验报告simplespc信息安全云实验系统二、实验项目名称: 古典密码置换密码三、实验学时:1 学时四、实验原理:1) 算法原理a) 置换密码算法是不改变明文字符,而是按照某一规则重新排列消息中的比特 或字符顺序, 才而实现明文信息的加密。将明文中的字母按照给定的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。其解密过程是根据密钥的字母数作为列数,将密文按照列、 行的顺序写出, 再根据密钥给出的矩阵置换产生新的矩阵,从而恢复明文。b) 置换密码( permutation cipher),又称换位密码。算法实施时,明文的字母保 持相同, 但顺序会被打乱。 置换只不过是一个简单的换位,每个置换都可以用一个置换矩阵ek来表示。每个置换都有一个与之对应的逆置换dk。置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密) 及对应的逆置换 (用于解密)。它是对明文l 长字母组中的字母位置进行重新排列,而每个字母本身并不改变。c) 设 n 为一固定整数, p、c 和 k 分别为明文空间、密文空间和密钥空间。明/ 密文是长度为n 的字符序列, 分别记为 x( x1,x2,,xn)属于 p 和 y(y1,y2,yn) 属于 c ,k 是定义在 1,2,n的所有置换组成的集合。对任何一个密钥(即一个 置换),定义置换如下:加密置换为:解密置换为:上式中,是的逆置换,密钥空间k 的大小为n!2) 算法参数置换密码算法主要有c、m、k、n 四个参数。 c 为密文, m 是明文, k 为密钥,n 为模数。3) 算法流程算法流程。如图所示五、实验目的:1) 学习置换密码的原理2) 学习置换密码的算法实现六、实验内容:1. 在虚拟机上运行置换密码.exe可执行文件,根据提示输入明文和密钥,同时检查输出的解密后的结果是否与明文一致。2. 学习掌握置换密码的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。3. 看懂实验程序代码,如有需要可在其上进行优化。七、实验器材(设备、虚拟机名称):windows 7工具:密码学课程 01 密码学算法 02古典密码 01置换密码八、实验步骤:1、查看置换密码算法运行结果并学习其核心算法1.1 点击【置换密码 .exe 】,选择对明文【 asdfgh 】使用密钥【 qwerty 】进行加密,程序运行结果。如下图所示但是在实验中发现, 当密钥中包含相同字符时,加密和解密结果会出现问题,如下图所示:在观察程序代码后, 发现应该是加密表生成出现问题,因此在实验中我重新修改了程序中计算加密表部分的代码,利用双层循环, 对于每一个字符, 计算比其小的字符或者和它一样但是出现在其左侧的字符个数,得到的序列便是加密表的内容,将程序按照上述思路修改后测试运行正确。1.2 更新后的置换密码的核心算法如下所示。#include #include using namespacestd;char a206, b206, c206, m102, key6, ky6, mw102, bb102;int zh6, zh16;int j, len, length, e, f; voidisd_zhihuan_zhihuan(intle )inti, s = 0;if( le % 6 = 0)/ 明文长度是 6的倍数时for (j = 0; j(le / 6); j+) for(i = 0; i6; i+, s+)elseaji = ms;/ 明文长度不是 6的倍数时for (j = 0; j(le -le % 6) / 6); j+) for(i = 0; i6; i+, s+)aji = ms;j+;intw = 0;for ( intl =le -le % 6; lle ; l+, w+)ajw = ml;for ( intll =le % 6; ll6; ll+)ajll =x ;/ 数组后补 x 使数组长度为 6的倍数length = 6 * j;intisd_zhihuan_encrypt()cout endl key;for ( intp = 0; p 6; p+)kyp = keyp;/ 生成置换表for ( inti = 0; i 6; i+) zhi = 1;for ( intj = 0; j 6; j+) if(keyj keyi | (j i&keyj = keyi) zhi+;cout endl 加密后的结果为 : ; intq = 0;for ( intg = 0; g = j; g+)for ( inth = 0; h 6; h+, q+)return0;bgh = agzhh - 1;/ 明文进行置换bbq = bgh; cout bbq;intisd_zhihuan_decrypt()intss6 = 1,2,3,4,5,6 ;for ( intw = 0; w6; w+)for( intp = 0; p6; p+)if(ssw = zhp) zh1w = p + 1;/ 计算逆置换表cout endl 解密后的结果为 : ; intt = 0;for ( intg = 0; g = j; g+)for( inth = 0; h6; h+, t+)return0;cgh = bgzh1h - 1;/ 明文进行逆置换mwt = cgh;voidmain()cout endl;cout m;while (mk !=0)/ 计算明文长度k+;len = k;cout 明文长度 len= len endl; isd_zhihuan_zhihuan(len); isd_zhihuan_encrypt(); isd_zhihuan_decrypt();for ( intd = 0; dlen + 6; d+)cout mwd;/ 输出解密后的明文inty, yy;for (yy = 0; yylen; yy+)if(mwyy = myy) y = 1;elsey = 0;if(y = 1)coutif(y = 0) endl crypt_ok endl;cout endl crypt_error endl;九、实验结果及分析:测试修改后的程序,结果正确,如下图所示:下面对结果进行分析: 对于输入的密钥miaooh计算每个字符的加密置换表值为4 3 1 5 6 2因此可获得加密结果为evlyao 验证输出结果正确计算每个字符的解密置换表值为3 6 2 1 4 5因此可获得解密结果为loveya十、实验结论:置换密码作为传统古典密码的一种,思想比较简单, 即将明文按照密钥的长度一行一行地写成一个矩阵, 然后每一行按密钥的顺序将明文读出获得的即为加密文。但是由于置换密码只是将明文简单地作顺序改变,字符并没有变化, 因此破译起来比较容易,安全性较低。十一、总结及心得体会:作为第一个实验, 熟悉了实验的操作环境, 并学会了置换密码的原理, 尝试对明文进行加密并将其解密。 通过查看程序源码对加密方法了解更加透彻, 在将源码进行修改后解决了密钥中包含相同字符结果出错的问题, 收获很大, 为以后其他加密算法的学习作准备。实验报告学生姓名李昕宜学号201500130052指导老师实验地点n3实验时间2018/3/19班级一班一、实验室名称:simplespc信息安全云实验系统二、实验项目名称: 古典密码 vigenere 密码三、实验学时:1 学时四、实验原理:1)算法原理a) vigenere 密码是由法国密码学家 blaise de vigenere于 1858 年提出的一种代换密码,它是多表代换密码的典型代表。b) 定义:设 m 为某一固定的正整数, p、c 和 k 分别为明文空间、密文空间和密钥空间,并且 p=k=c=(z26)m,对一个密钥 k=(k1,k2, ,km),定义维吉尼亚密码的加解密算法如下:vigenere 密码加密算法:ek(x1,x2,xm)=(x1+k1,x2+k2,xm+km)vigenere 密码解密算法:dk(y1,y2,ym)=(y1-k1,y2-k2,ym-km)。其中 k=(k1,k2,km)是一个长为m 的密钥字,密钥空间的大小为26m,所以对一个相对小的m,穷举密钥也需要很长的时间。如m=7,则密钥空间大小超过8 109,所以手工搜索非常困难。当明文的长度超过m 时,可将明文串按长度m分局,然后对每一组使用密钥k 加密。2) 算法参数vigenere 密码算法主要有c、m、k 三个个参数。 c 为密文, m 是明文, k 为密钥。3) 算法流程算法流程如下。如图所示五、实验目的:1) 学习维吉尼亚算法的原理2) 学习维吉尼亚算法的实现六、实验内容:1. 在虚拟机上运行vigenere.exe可执行文件,根据提示输入明文和密钥,同时检查输出的解密后的结果是否与明文一致。2. 学习掌握维吉尼亚算法的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。3. 看懂实验程序代码,如有需要可在其上进行优化。七、实验器材(设备、虚拟机名称):windows 7工具:密码学课程 01 密码学算法 02古典密码 03 vigenere 密码算法八、实验步骤:一、查看维吉尼亚密码算法运行结果并学习其核心算法1.1 点击文件【 vigenere.exe】,输入指令【 v】,输入明文【 xipuyangguang】,即可得到密钥和密文和明文,如图1 所示图 11.2 维吉尼亚密码的核心算法如下所示。根据实验中已给代码进行分析了解了维吉尼亚密码的实现步骤,将主程序中没有用到的生命变量去掉,加入一些交互语句得到如下代码:#include #include #include #include #include usingnamespacestd;void isd_vigenere_crypt(char m,chark,charr )inti, j, s = 0;j = strlen(k);for (i = 0;mi; i+)mi = tolower(mi);for (i = 0;ki; i+)ki = tolower(ki);for (i = 0;mi; i+)if(isalpha(mi)r i = (mi -a+ks%j -a ) % 26 +a ;elser i = 0;s+;/*s 用来跳过明文中的空格字符*/r i =mi;void/* 密文字符串结束符 */isd_vigenere_decrypt(charc,chark,charm)inti, j, s = 0;j = strlen(k);for (i = 0;ci; i+)ci = tolower(ci);for (i = 0;ki; i+)ki = tolower(ki);for (i = 0;ci; i+)if(isalpha(ci)elsemi = 0;mi = (ci -ks%j + 26) % 26 +a ; s+;mi =ci;void main( intargc ,char * argv )char m1024;printf( 古典密码算法演示程序 ); char command;printf(n );cout 输入v: 维吉尼亚加密 !n; cout 输入 h: 获得帮助 !n; cout 输入 e: 退出程序 !n; cout command; switch(command)case v:char k =best ;cout 输入 v: 维吉尼亚加密!n ;coutcout 输入 h: 获得帮助 !n 输入 e: 退出程序 !n;cout m;char c80; char d80;isd_vigenere_crypt(m, k, c);isd_vigenere_decrypt(c, k, d);cout 明 文 : ;puts(m);cout 密 钥 : ; puts(k);cout 加密结果: ;puts(c);cout 解密结果: ; puts(d);goto loop;case e:return ;case h:goto loop;default:goto loop;九、实验结果及分析:测试程序,结果正确,如下图所示:明文nomorecountingdollars密钥be s tbestbestbestbestb加密os ehsiuhvrlbokvh mpskt解 密 nomorecountingdollars验证结果与输出一致,正确十、实验结论:维吉尼亚密码加密方法是根据密钥内容,对输入的明文的字母进行替换,在密钥长度大于1 的情况下,通常来说相同的字母也会由于对应的密钥字符不同而被不同的字符所替换, 因此在一定程度上来说保证了加密技术的安全性,但是若已知密钥的长度且有足够多样本的情况下,同样也可以做词频分析从而破译密码。十一、总结及心得体会:维吉尼亚密码作为古典密码中的一种,加密原理简单易懂, 程序实现也没有太大的困难,并且在密钥长度较长时加密安全性也可以有一定保证,较难破译, 但用频率分析法可以破译已知密钥长度的密文,因此对于现代技术来说容易破译,但通过学习维吉尼亚密码学到了其加密的原理和基于统计破译密码的思想, 收获很大。实验报告学生姓名李昕宜学号201500130052指导老师实验地点n3实验时间2018/3/20班级一班一、实验室名称:simplespc信息安全云实验系统二、实验项目名称: 古典密码代换密码三、实验学时:1 学时四、实验原理:1) 单表代换密码a) 加法密码a 和 b 是有n 个字母的字母表。定义一个由a 到 b 的映射: f:ab f(ai )= bi=ajj=i+k mod n加法密码是用明文字母在字母表中后面第k 个字母来代替。k=3 时是著名的凯撒密码。恺撒密码历史上第一个密码技术“恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(高卢战记)。b) 乘法密码a 和 b 是有 n 个字母的字母表。 ?定义一个由a 到 b 的映射: f:ab f(ai )= bi= aj j=ik mod n 其中, (n,k)=1。注意:只有 (n,k)=1,才能正确解密。c) 密钥词组代替密码随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中 去掉这第一行的字母, 其余字母顺序写入矩阵。 然后按列取出字母构成密文字母表2) 多表代换密码单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。可以利用频率分析来破译。故产生了更为安全的多表代换密码,即构造多个密文字母表,在密钥的控制下用以一系列代换表依次对明文消息的字母序列进行 代换。著名的多表代替密码有vigenere 密码等。a) vernam密码明文、密文、密钥都表示为二进制位:m=m1,m2,mn k =k1,k2,kn c =c1,c2,cnb) playfair密码用密钥控制生成矩阵,然后每两个字母为单位进行代换。c) hill 密码(乘积密码)建立在矩阵相乘的基础上,但不能抵抗已知明文攻击。五、实验目的:1) 学习代换密码的原理2) 学习代换密码的算法实现六、实验内容:1. 在虚拟机上运行代换密码.exe可执行文件,根据提示输入明文和密钥,同时输入之前得到的密文和密钥检查输出的解密后的结果是否与明文一致。2. 学习掌握代换密码的基本思想, 了解其分类和不同代换密码之间的区别与共同点,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。3. 看懂实验程序代码,如有需要可在其上进行优化。七、实验器材(设备、虚拟机名称):window 7工具:密码学课程 01 密码学算法 02古典密码 04代换密码八、实验步骤:一、查看代换密码算法运行结果并学习核心算法1.1 运行可执行程序,结果如下(注意:这里输入的字符串位数最多不超过5个)。如图 1 所示图11.2 源码阅读在实验中发现提供的源码和代换密码.exe文件无法对应, 因此我根据可执行文件进行试验观察发现,程序是将待加密明文中的每一个字符的ascii码与密钥的值相加,加密结果就是ascii码和对应的字符,根据这个思路写的程序如下所 示:#include #include usingnamespacestd; intmain()cout 请输入待加密的明文: m;cout 请输入密钥: k;inti = 0;for (; i m.length(); i+) ci = m i + k;ci =n;cout 密文为 : endl c endl 请输入待解密的密文: com;cout 请输入密钥: k;cout 解密后的明文为: endl;char ming10= ; i = 0;for (; i com.length(); i+) mingi = ci - k;mingi =n;cout ming endl; return0;九、实验结果及分析:测试修改后的程序,结果正确,如下图所示: d+20=xb+20=vc+20=wa+20=u十、实验结论:在本次实验中了解到代换密码分为单表代换密码和多表代换密码,其中多表代换密码中由于用多个代换表进行加密,因此安全性要比单表代换密码更强。代换密码的思想是要首先建立一个代换表(即密钥),加密时需要将加密的明文依次通过查表, 替换为相应的字符, 明文字符被逐个替换后生成密文,需要注意的是将代换密码和置换密码进行区分,置换密码只是更换明文中字符的顺序,只是进行位置的置换。而之前学到的维吉尼亚密码是代换密码的一种。十一、总结及心得体会:本次实验中接触到的代换密码我们已经很熟悉了,因为维吉尼亚密码是多表代换中重要的一种, 同时我们还需要将其和之前学到的置换密码区分开,实验中发现,若将多表代换密码的技术和置换密码的技术结合起来得到的加密技术的安全性应该有很高的保证。实验报告学生姓名李昕宜学号201500130052指导老师实验地点n3实验时间2018/3/20班级一班一、实验室名称:simplespc信息安全云实验系统二、实验项目名称: 古典密码移位密码三、实验学时:1 学时四、实验原理:1) 算法原理a) 移位密码就是对26 个字母进行移位操作,可以移动任意位数,这样就实现了对明文的加密,移位操作简单易行,因此,加密解密比较简单。b) 移位密码的基本思想:移位密码算法 c=m+k(mod 26),k可以使 0k26 的任意整数。加密算法: x=x+k(mod26),解密算法 x=x-k(mod 26)。当 k=3,时,为凯撒密码。2) 算法参数移位密码算法主要有c、m、k 三个参数。 c 为密文, m是明文, k 为密钥。3) 算法流程算法流程如下。如图所示五、实验目的:1) 学习移位密码的原理2) 学习移密码的实现六、实验内容:1. 在虚拟机上运行移位密码.exe可执行文件,根据提示输入明文和密钥,同时检查输出的解密后的结果是否与明文一致。2. 学习掌握移位密码的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。3. 看懂实验程序代码,如有需要可在其上进行优化。七、实验器材(设备、虚拟机名称):windows 7工具:密码学课程 01 密码学算法 02古典密码 06移位密码算法八、实验步骤:一、查看移位密码算法运行结果并学习核心算法1.1 点击【移位密码 .exe】,选择【 0】对明文进行加密。如图1 所示图 11.2 重新运行程序,选择【1】,对密文进行解密。如图2 所示图 21.3 移位密码的核心算法如下所示。/#include stdafx.h #include #includeconio.h #include usingnamespacestd;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024阳泉市矿区桥头街道社区工作者招聘考试试题
- 第20课 国民党挑起内战 课件 统编版八年级历史上册
- 2026届黑龙江省鸡西市东方红林业局中学化学高一上期中综合测试试题含解析
- 2026届天津市和平区名校化学高二上期中联考模拟试题含解析
- 民兵安全知识培训内容课件
- 商业步行街改造与城市公共服务设施配套评估报告
- 2025年冰雪运动培训基地冰雪运动装备租赁服务研究报告
- 2025年电商平台内容营销与种草经济市场前景展望报告
- 2025年短视频内容监管与平台社会责任评价体系创新实践报告
- 城市公共空间优化与低碳建设实践案例分析报告
- 200兆瓦风电项目清单及报价表
- T/CHES 100-2023水质高锰酸盐指数的测定自动氧化还原滴定法
- 结直肠癌导致急性肠梗阻外科治疗中国专家共识(2025版)课件
- (人教版)初中英语九年级全册 各单元测试卷及答案共十四套
- 售后服务转移合同协议
- 廊坊市广阳区2025年小升初素养数学检测卷含解析
- 高值耗材点评制度
- 附件6工贸高风险企业高危领域较大以上安全风险管控清单
- 人教版2024-2025学年七年级数学上册教学计划(含进度表)
- (高清版)DB11∕T687-2024公共建筑节能设计标准
- 足球教育课件
评论
0/150
提交评论