2021年古典密码实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实 验 报 告 试验室名称: 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) 算法步骤? ? 算法步骤。如图所表示 试验目: 学习置换密码原理 2) 学习置换密码算法实现 试验内容: 1.在虚拟机上运行置换密码.exe可实施文件, 依据提醒输入明文和密钥, 同时检验输出解密后结果是否与明文一致。 2.学习掌握置换密码原理, 并依据明文和密钥计算出对应加密文, 并与程序输出结果进行比对, 掌握其加密解密过程。 3.看懂试验程序代码, 如有需要可在其上进行优化。 试验器材(设备、 虚拟机名称): Windows 7 工具: C:\tools\密码学课程\01密码学算法\02 古典密码\01 置换密码 试验步骤: 1、 查看置换密码算法运行结果并学习其关键算法 1.1? 点击【置换密码.exe】, 选择对明文【asdfgh】使用密钥【qwerty】进行加密, 程序运行结果。以下图所表示? 不过在试验中发觉, 当密钥中包含相同字符时, 加密和解密结果会出现问题, 以下图所表示: 在观察程序代码后, 发觉应该是加密表生成出现问题, 所以在试验中我重新修改了程序中计算加密表部分代码, 利用双层循环, 对于每一个字符, 计算比其小字符或者和它一样不过出现在其左侧字符个数, 得到序列便是加密表内容, 将程序根据上述思绪修改后测试运行正确。 1.2 ?更新后置换密码关键算法以下所表示。 #includeiostream #includealgorithm using namespace std; char a[20][6], b[20][6], c[20][6], m[102], key[6], ky[6], mw[102], bb[102]; int zh[6], zh1[6]; int j, len, length, e, f; void ISD_zhihuan_zhihuan(int le) { int i, s = 0; if (le % 6 == 0) //明文长度是6倍数时 { for (j = 0; j(le / 6); j++) for (i = 0; i6; i++, s++) { a[j][i] = m[s]; } } else //明文长度不是6倍数时 { for (j = 0; j((le - le % 6) / 6); j++) for (i = 0; i6; i++, s++) { a[j][i] = m[s]; } j++; int w = 0; for (int l = le - le % 6; lle; l++, w++) { a[j][w] = m[l]; } for (int ll = le % 6; ll6; ll++) { a[j][ll] = X; //数组后补x使数组长度为6倍数 } } length = 6 * j; } int ISD_zhihuan_encrypt() { cout endl 请输入密钥,要求是6位字母: ; cin key; for (int p

文档评论(0)

159****9606 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档