好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

密码学1实验报告(共19页).doc

19页
  • 卖家[上传人]:des****85
  • 文档编号:240493186
  • 上传时间:2022-01-15
  • 文档格式:DOC
  • 文档大小:300.50KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 精选优质文档-----倾情为你奉上密码学应用与实践实 验 报 告专业:信息安全学号:姓名: 张洋哈尔滨工业大学(威海) 实验1:实现DES密码体制姓名张洋院系计算机科学与技术学院学号任课教师刘扬指导教师刘杨实验地点宋健北楼402实验时间2011-10-24 18:40实验课表现出勤、表现得分实验报告得分实验总分操作结果得分一、实验目的1. 编写程序实现DES的加、解密1) 编程构造DES的密钥;2) 应用上述获得的密钥将文件或文件夹或图片进行加、解密2. 用DES算法实现口令的安全二、 实验内容1. 概要设计1) 编写CDES_zhy类,实现DES算法加解密;2) 编写用户界面,实现可视化操作;3) 核心代码与界面连接;4) 测试程序;5) 调试程序;6) 得到Release版本2. 详细设计1) 密钥生成· 取得密钥从用户处取得一个64位(本文如未特指,均指二进制位)长的密码key ,,去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥· 等分密钥· 密钥移位DES算法的密钥是经过16次迭代得到一组密钥的,把前面生成的A、B视为迭代的起始密钥,比如在第1次迭代时密钥,循环左移1位,第3次迭代时密钥循环左移2位。

      第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位第一次迭代:A(1) = ǿ(1) A B(1) = ǿ(1) B第i次迭代:A(i) = ǿ(i) A(i-1)B(i) = ǿ(i) B(i-1)· 密钥的选取前面第i次迭代生成的两个28位长的密钥为把合并按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,……,依此类推,k的最后一位最后一位是56位密钥的第32位生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥:· 迭代DES算法密钥生成需要进行16次迭代,最终形成16套加密密钥:key[0]、key[1] , key[2],……, key[14] , key[15]2) 数据的加密操作· 取得数据把明文数据分成64位的数据块,不够64位的数据块以适当的方式补足· 初始换位· 数据扩展第一次迭代以1.2.2步中生成的newData作为输入数据,第i (i > 1)次迭代以第i-1次的64位输出数据为输入数据,把64位数据按位置等分成左右两部分:保持left不变,把扩展后的48位right与第i次迭代生成的48位加密密钥进行按位异或操作 形成一个新的48位的right。

      · 数据压缩形成的48位right值,需要把48位的right值转换成32位的right值把right视为由8个6位二进制块组成,a,b,……,h都是6位,强制转换成10进制整数的值都不大于64a,b,…,h转成10进制整数后,在对应的表中根据转换后整数值取得对应位置的替代值,每6位用一个4位替换这样就完成了从48位向32位数据的转换有些资料中介绍6位转4位的实现方法与本文所采用的不同,但殊途同归,最终的结果是相同的 · 数据换位形成的32位right,根据表8进行转换:数据的原第16位换到第一位,原第7位换到第二位,……,依此类推,最后得到新的32位数据· 交换数据把right 和left按位异或后的值赋给right,然后将本轮输入的原始right值赋给left· 迭代DES算法需要进行16次迭代,在完成16次迭代前,把第i-1次得到的的left和right的值作为第i次的输入数据,循环重复· 数据整理为保证加密和解密的对称性,DES算法的前15次迭代每完成一次迭代都要交换left和right的值,第16次迭代不交换两者的数值. 到此把32位的left和right合并成64位的Data。

      数据的原第40位换到第一位,原第8位换到第二位,...,依此类推,最后的得到新的64位Data即为密文3) 数据的解密数据解密的算法与加密算法相同,区别在于1.2.3步中和数据进行按位异或的密钥的使用顺序不同,在加密中是按照第i次迭代就采用第i次迭代生成的密钥进行异或,而解密时第i次迭代就采用第17-i次迭代生成的密钥和数据进行异或3. 程序设计模块设计如下(头文件):#define PLAIN_FILE_OPEN_ERROR -1#define KEY_FILE_OPEN_ERROR -2#define CIPHER_FILE_OPEN_ERROR -3typedef char ElemType;class CDES_zhy {public: int ByteToBit(ElemType ch,ElemType bit[8]); int BitToByte(ElemType bit[8],ElemType *ch); int Char8ToBit64(ElemType ch[8],ElemType bit[64]); int Bit64ToChar8(ElemType bit[64],ElemType ch[8]); int DES_MakeSubKeys(ElemType key[64],ElemType subKeys[16][48]); int DES_PC1_Transform(ElemType key[64], ElemType tempbts[56]); int DES_PC2_Transform(ElemType key[56], ElemType tempbts[48]); int DES_ROL(ElemType data[56], int time); int DES_IP_Transform(ElemType data[64]); int DES_IP_1_Transform(ElemType data[64]); int DES_E_Transform(ElemType data[48]); int DES_P_Transform(ElemType data[32]); int DES_SBOX(ElemType data[48]); int DES_XOR(ElemType R[48], ElemType L[48],int count); int DES_Swap(ElemType left[32],ElemType right[32]); int DES_EncryptBlock(ElemType plainBlock[8], ElemType subKeys[16][48], ElemType cipherBlock[8]); int DES_DecryptBlock(ElemType cipherBlock[8], ElemType subKeys[16][48], ElemType plainBlock[8]); int DES_Encrypt(char * plainFile, char * keyStr,char *cipherFile); int DES_Decrypt(char * cipherFile, char * keyStr,char *plainFile); };三、实验结果1. 程序初始界面。

      2. 选择DES加解密选项卡对图片加密加密后的文件为选择解密按钮,可得到原文件3. 选择口令安全选项卡初始密码为:zhangyang,密钥为zhangyang若把密码改为abc,再次登录测试则再次登录即可登录成功,原来的密码已经失效四、实验中遇到的问题总结1. 编程实现了DES的加、解密1) 编程实现了构造DES的密钥;2) 编程实现了用上述获得的密钥将文件或文件夹或图片进行加、解密2. 编程实现了用DES算法实现口令的安全3. 心得1) 通过上网查资料,又深入学习了DES的加密原理S盒是IBM自己定义的B1b2b3b4b5b6 用b1b6表示行,其他表示列,由此实现转换,E函数是对32位串的扩展,置换P是对密钥的置换2) 测试发现DES,算法把64位密码中的第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,在计算密钥时要忽略这8位如果输入的密码只是在这8位上有区别的话,那么操作后的结果将是一样的3) DES算法中只用到64位密钥中的其中56位,而第8、16、24、......64位8个位并未参与DES运算,这一点,向我们提出了一个应用上的要求,即DES的安全性是基于除了8、16、24、......64位外的其余56位的组合变化256才得以保证的。

      因此,在实际应用中,我们应避开使用第8、16、24、……64位作为有效数据位,而使用其它的56位作为有效数据位,才能保证DES算法安全可靠地发挥作用如果不了解这一点,把密钥Key的8、16、24、……、64位作为有效数据使用,将不能保证DES加密数据的安全性实验2:实现RSA密码体制姓名张洋院系计算机科学与技术学院学号任课教师刘扬指导教师刘杨实验地点宋健北楼402实验时间2011-10-24 18:40实验课表现出勤、表现得分实验报告得分实验总分一、实验目的1. 编写程序构造一RSA密钥;2. 编写程序实现快速指数算法;3. 编写程序生成大素数;4. 实现RSA密码体制二、实验内容1. 详细设计1) 加密解密· 密钥的产生找出两个相异的大素数P和Q,令N=P×Q,M=(P-1)(Q-1)找出与M互素的大数E,用欧氏算法计算出大数D,使D×E≡1 MOD M丢弃P和Q,公开E,D和NE和N即加密密钥,D和N即解密密钥· 加密的步骤计算N的有效位数tn(以字节数计),将最高位的零忽略掉,令tn1=tn-1比如N=0x012A05,其有效位数tn=5,tn1=4将明文数据A分割成tn1位(以字节数计)的块,每块看成一个大数,块数记为bn。

      从而,保证了每块都小于N对A的每一块Ai进行Bi=Ai^E MOD N运算Bi就是密文数据的一块,将所有密文块合并起来,就得到了密文数据B· 解密的步骤同加密的第一步将密文数据B分割成tn位(以字节数计)的块,每块看成一个大数,块数记为bn对B的每一块Bi进行Ci=Bi^D MOD N运算Ci就是密文数据的一块,将所有密文块合并起来,就得到了密文数据C2) 素数的产生· 实际考虑产生一个n位的随机大数p设p的最高位和最低位都为1,以确保达到要求的长度,和确保该大数是奇数检查以确保p不能被任何小素数整除,如3,5,7,11等等有效的方法是测试小于2000的素数使用字轮方法更快对某随机数a运行Rabin-Miller检测,如果P通过,则另外产生一个随机数a,在测试选取较小的a值,以保证速度做5次Rabin-Miller测试,如果有一次失败,返回第一步,从新产生p,再测试· 素数检测法对一个待测的随机大数p,计算p的有效位n,比如p=。

      点击阅读更多内容
      相关文档
      高等学校学生手册.doc 2025年区教育系统招聘编外教师储备人才事业单位考试押题.docx 2025年秋季青岛版三年级数学上册认识轴对称现象教学课件.pptx 2025年秋季青岛版三年级数学上册用乘法估算解决问题教学课件.pptx 2025年秋季青岛版三年级数学上册两、三位数乘一位数的笔算(不进位)教学课件.pptx 2025年秋季青岛版三年级数学上册1200张纸有多厚教学设计范文.docx 2025年秋季青岛版三年级数学上册多位数除以一位数教学课件.pptx 2025年秋季青岛版三年级数学上册认识平移、旋转现象教学课件.pptx 2025年秋季青岛版三年级数学上册多位数乘一位数教学设计范本.docx 2025年秋季青岛版三年级数学上册认识平移与旋转教学设计范文.docx 2025年秋季青岛版三年级数学上册乘数中间有0或末尾有0的乘法教学课件.pptx 2025年秋季青岛版三年级数学上册两位数乘一位数的笔算(进位)教学课件.pptx 2025年秋季青岛版三年级数学上册《两、三位数乘一位数的笔算(不进位)》教学设计与意图.docx 2025年秋季青岛版三年级数学上册我学会了吗教学课件.pptx 2025年连云港市妇幼保健院招聘专业技术人员考试笔试试题.docx 2025年深圳市大鹏新区发展和财政局招聘考试笔试试卷.docx 2025年绵阳市梓潼县财政投资评审中心招聘考试试题.docx 2025年来宾市妇幼保健院招聘考试笔试试题.docx 2025年无极县教育系统招聘教师考试笔试试卷.docx 2025年灵山县第三中学调配教师考试笔试试题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.