- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编写古典加解密算法 西安交通大学 计算机教学实验中心 实验简要介绍 使用凯撒和维吉尼亚加密算法编程实现将明文转换成密文。 使用凯撒和维吉尼亚解密算法编程实现将密文转换成明文。 实验目的 理解网络安全、加密/解密的概念 掌握几个典型古典加解密算法的应用 实验设备及软件 所需设备 一台计算机 实验所需软件及工具 编程工具不限 实验原理 单表代换密码 对于一个给定的加密密钥,明文信息空间中的每一个元素将被代换为密文消息空间中的唯一元素。 凯撒密码 加密算法 Ek(m)=m+k=c mod N 解密算法 D(c)=c-k=m mod N 其中N=26,k=3 实验原理 多表代换密码 以一系列(两个以上)代换表一次对明文消息空间中的明文消息元素进行代换的加密方法。 维吉尼亚密码 加密算法 Eki(mi)=mi+ki=ci mod N 加密算法 Dki(ci)=ci-ki=mi mod N 其中ki属于K是密钥,mi属于M是明文,ci属于C是密文。 实验内容说明 使用凯撒加密算法编程实现将明文转换成密文 使用凯撒解密算法编程实现将密文转换成明文 使用维吉尼亚加密算法编程实现将明文转换成密文 使用维吉尼亚解密算法编程实现将密文转换成明文 实验步骤 使用凯撒加密算法编程实现将明文转换成密文,如下图所示。 要求: 键入的明文允许任意字母,允许大小写混用,长度不限。 实验提示 用c语言实现加密的部分代码,仅供参考: int t=int(str[i]-‘a’); //计算该字母在字母表中的序号 t=(t+3)%26; //用该字母后3个序号的字母 str[i]=(char)(t+‘a’); //将该序号转换成字母 注意:该部分程序只是对小写字母的转换。大写字母的转换请自行设计其算法。 实验步骤 使用凯撒解密算法编程实现将密文转换成明文,如下图所示。 要求: 密文由用户指定,可以出现大小写字母,长度不限。 实验提示 用c语言实现解密的部分代码 int t=int(str[i]-‘a’); //计算该字母在字母表中的序号 t=(t-3+26)%26; //用该字母前3个序号的字母 str[i]=(char)(t+a); //将该序号转换成字母 注意:该部分程序只是对小写字母的转换,大写字母的转换请自行设计其算法。 实验步骤 使用维吉尼亚加密算法编程实现将明文转换成密文,如下图所示。 要求: 明文由用户指定,可以出现大小写字母,长度不限。 密钥长度为5,数值由用户指定。 实验提示 用c语言实现加密的部分代码 int t=int(str[i]-‘a’); //计算该字母在字母表中的序号 t=(t+key[j])%26; //用该字母后key[j]个序号的字母 if(++j==5){j=0;} //5个密钥循环使用 str[i]=(char)(t+‘a’); //将该序号转换成字母 注意: 该部分程序只是对小写字母的转换; Key[5]中连续存放了5个密钥。 实验步骤 使用维吉尼亚解密算法编程实现将密文转换成明文,如下图所示。 要求: 密文由用户指定,可以出现大小写字母,长度不限。 密钥长度为5,数值由用户指定。 实验提示 用c语言实现解密的部分代码 int t=int(str[i]-‘a’); //计算该字母在字母表中的序号 t=(t-key[j]+26)%26; //用该字母前key[j]个序号的字母 if(++j==5){j=0;} //5个密钥循环使用 str[i]=(char)(t+‘a’); //将该序号转换成字母 注意: 该部分程序只是对小写字母的转换; Key[j]中连续存放了5个密钥。 实验习题 写出下面加密算法对应的解密算法,并写出明文“I AM A HACKER”对应的密文,分析该加密算法的安全性: 将明文的每个字母转换为对应的7比特ASCII码; 在每个字母对应的7比特ASCII码的最左边添加比特0; 对每个8比特表示的字母,将其前4个比特和后4个比特交换; 写下每4个比特对应的十六进制值。 实验报告要求 编程实现凯撒加解密算法。 在维吉尼亚密码基础上,将密钥的个数改为由用户指定,编程实现加解密算法。 完成实验习题。 * * *
文档评论(0)