信息安全学实验一.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《信息安全学》实验 云南大学软件学院 实 验 报 告 课程: 信息安全学实验 任课教师: 专业: 学号: 姓名: 成绩: 实验1 古典密码算法 实验目的 通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。 实验原理 古典密码算法曾被广泛应用,大都比较简单。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。其中替代密码和置换密码是具有代表性的两种古典密码算法。 实验环境 PC机,C或C++编译环境 实验内容和步骤 根据实验原理部分对替代密码算法的介绍,同时查找和学习相关知识,自己创建明文信息,并选择一个密钥,编写替代密码算法的实现程序,实现加密和解密操作。 对于替换密码,在本实验分别实现了移位密码和维吉尼亚密码,其中维吉尼亚算法中能够对文本文件进行加密和解密操作。 移位密码 程序流程图: 开始 开始 2 2 输入密文 输入密文c 输入1或2 1 1 输入密钥k 输入密钥k 输入明文m 输入密钥k 输入密钥k j=0 c[j]=(c[j]-k-‘a’+26)%26+’a’j++ c[j]=(c[j]-k-‘a’+26)%26+’a’ j++ i=0 m[i]=(m[i]+k-‘a’)%26+’a’ m[i]=(m[i]+k-‘a’)%26+’a’ i++ c[j]=’\0’ c[j]=’\0’ 否 否 否m 否 m[i]=’\0’0 是 是 是输出明文 是 输出明文m 输出 输出密文c 结束 结束 算法设计: 实现加密的过程中,先输入明文m,明文以字符串的形式储存在数组中,再输入密钥k,密钥范围为1-25,加密函数encrypt对明文m中的字符进行逐个加密E(m)=(m+k)mod26。解密时先输入需要解密的密文c,密文以字符串的形式储存在数组中,再输入相对应的密钥k,解密函数decrypt对密文c中的字符进行逐个解密D(c)=(c-k)mod26。该算法中时间复杂度为O(n)。 测试结果截图: 维吉尼亚密码 程序流程图: 开始 开始 2 2 输入密文 输入密文c 输入1或2 1 1 输入密钥k 输入密钥k 输入明文m 输入密钥k 输入密钥k i=0 l=k l=k的长度 i=0 i=0 j=0 j=0 l=k l=k的长度 c[i]=(c[i]-k[j] c[i]=(c[i]-k[j]-‘a’+26)%26+’a’, i++,j++ j=0 m[i]=(m[i]+k[j]-‘a’)%26+’a’, m[i]=(m[i]+k[j]-‘a’)%26+’a’, i++,j++ 否j 否 j0 是否j 是 否 jl 否c[i]=’\0’ 否 c[i]=’\0’ 是 是 否m 否 m[i]=’\0’0 是 是 是输出 是 输出明文m 输出 输出密文c 结束 结束 算法设计: 加密过程中,先输入明文m,明文以字符串的形式储存在数组中,再输入密钥k,维吉尼亚密码在移位密码的基础上增大了密钥空间,密钥以字符串的形式储存于数组中,加密函数encrypt按照密钥的字符循环对明文m中的字符进行逐个加密。解密时先输入需要解密的密文c,密文以字符串的形式储存在数组中,再输入相对应的密钥k并储存在数组中,解密函数decrypt对密文c中的字符进行逐个解密。该算法中时间复杂度为O(n)。 测试结果截图: 对字符串加密: 对文本文件加密: 根据实验原理部分对置换密码算法的介绍,同时查找和学习相关知识,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。 该置换算法可以对文本文件进行加密解密操作。 程序流程图: 开始 开始 2 2 输入密文 输入密文c 输入1或2 1 1 输入密钥k 输入密钥k 输入明文m 算出明文 算出明文的行数列数并存入二维数组 输入密钥k 算出 算出明文的行数列数并存入二维数组 算出反向 算出反向置换函数 对 对二维数组中的密文进行两次列置换 算出 算出置换函数 将二维数组中的字符串放入一维数组 将二维数组中的字符串放入一维数组 对二维数组中的明文进行两次列置换 将 将二维数组中的字符串放入一维数组 输出 输出明文m 输出 输出密文c 结束 结束 算法设计: 实现置换密码加密过程,先输入明文m,明文以字符串的形式储存在数组中,再输入密钥k,密钥以字符串的形式储存于数组中,若明文不能被密钥整除,则在明文后随机添加字母使其能够被密钥整除。对密钥字符串进行冒泡排序,根据密钥中字母得出置换函数f,将明文m存入二维数组,可以选择需要进行置换的次数

文档评论(0)

676200 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档