实验一:希尔密码.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文档。上传文档
查看更多
实验一:希尔密码

实验一:希尔密码(Hill Cipher)的实现 姓名 韦能龙 班级 2011 学号实验目的 通过实验,使学生对古典密码学有充分的认识;学会正确使用编程语言(C、Mathematica、Maple等)实现希尔密码,验证课堂中所学的古典密码算法;为学习现代密码算法及其应用奠定基础。 实验内容及要求 1、学生自己随机选取一个55矩阵,判断是否可以作为密钥 2、利用所选密钥,对给定的5元明文信息进行加解密 3、对加密得到的密文进行解密,验证结果的正确性 实验结果(可续页)(包括实验代码、实验结果) 1、 如下是我的程序运行时的界面: 我的程序设定的是让电脑随机生成1到100的整数,随机生成的矩阵不一定能成为秘钥,因为能成为加密秘钥的充分必要条件是gcd(det K,26)=1,如图: 尝试成功后决定用下面矩阵为秘钥矩阵: 我写的程序能提供加密解密功能,并且还可以更改秘钥,如下图: 输入1 加密,输入2解密,如下图: 由上图可知,明文和密文经加密和解密后前后相同,说明程序运行正确。 2、实验代码如下: #includeiostream #includestring #includectime #includecstdlib using namespace std; const int M=5; //这个函数用来求公约数 int gcd(int a,int b) { if(a%b==0)return b; return gcd(b,a%b); } //下面是加密或者解密函数。 string encryption_or_decryption(int a1,int a2 ,string s1,int a[M][M]) { string s2; int Plaintext[M];//明文数组 int ciphertext[M]={0};//密文数组 for(int i=0;iM;i++) { Plaintext[i] = s1[i] - a1; } for(int i=0;iM;i++) { for(int j=0;jM;j++) { ciphertext[i]+=Plaintext[j]*a[i][j]; } ciphertext[i]%=26; if(ciphertext[i]0)ciphertext[i]+=26; char dd = ciphertext[i] + a2; s2.push_back(dd); } return s2; } //下面这个函数是用来计算行列式的。 int DET(int n ,int c [M][M]) { if(n==2)return c[0][0]*c[1][1]-c[0][1]*c[1][0]; int i_1,j_1,d; //d为数组b的行 int b[M][M]; //用于存放余子式 int p=0,q=0; int sum=0; for(i_1=0;i_1n;i_1++) { for(d=0;dn-1;d++) { if(di_1) p=0; else p=1; for(j_1=0;j_1n-1;j_1++) { b[d][j_1]=c[d+p][j_1+1]; } } if(i_1%2==0) q=1; else q=-1; sum=sum+c[i_1][0]*q*DET(n-1,b); } return sum; } void show() { cout ***********************************************************endl; cout ***********************************************************endl; cout ****************** 欢迎使用加解密系统 ***************endl; cout **************请根据提示输入秘钥、明文和密文***************endl; cout ***********************************************************endl; cout ***********************************************************endl; cout按

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档