实现DES 分组密码算法的加解密.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现DES 分组密码算法的加解密

实 验 报 告 课程:密码学 班级: 姓名: 学号: 成绩: 指导教师: 实验日期:2011/5/25 实验密级: 预习程度: 实验时间:12:50-15:20 仪器组次: 18 必修/选修:必修 实验序号:4 实验名称: 实现DES 分组密码算法的加解密 实验目的与要求:1、掌握DES 分组密码算法的软件实现方法; 2、复习DES 分组密码算法设计的基本原理; 3、能用DES 分组密码算法实现已知明文的加解密 实验仪器: 名称 型号 数量 计算机 Lenovo 1 实验要求 1、求主密钥的扩展密钥前,先输出使用的PC-1 置换和PC-2 置换; 2、对明/密文文件用DES 算法进行加/解密前,先输出确定使用的S 盒和有关置换表; 3、“确定主密钥的扩展密钥”和“对明/密文文件的加/解密”分别编写两个模块,如果时 间不够,可以任选一个模块; 4、确定扩展密钥前,先指出是加密密钥还是解密密钥; 5、密钥扩展的移位的位数可以先添表,但最后一轮移位完后,必须回到初始值c0d0。 6、主密钥长度与明文相一致,需要忽略校验位; 7、能完成任意给定的一个明/密文文件的加/解密; 8、加解密结果正确。 二、实验内容与步骤 下面是程序的部分代码 int main() { char MingWen[104]; char target[8]; char InputKey[8]; int text[64]; int text_ip[64]; int L0[32],Li[32]; int R0[32],Ri[32]; int RE0[48]; int key[64]; int keyPC1[56]; int A[28]; int B[28]; int keyAB[56]; int K[16][48]; int RK[48]; int RKS[8]; int SP[32]; int RKSP[32]; int text_end[64]; int text_out[14][64]; char init[9]={HTmadeit}; int CBC[64]; int result[13][64]; int H[208]; char MiWen[208]; int C[832]; int M[13][8]; char choice; int t; int i,j; int k,l,m,n; int r[8],c[8]; int flag=1; printf(欢迎使用DES加密解密\n\n); while(flag) {printf(A加密,B解密,请选择:\n); scanf(%c,choice); while(choice!=Achoice!=Bchoice!=achoice!=b) {printf(对不起,您的输入不合法。请选择A或B,A表示加密,B表示解密。\n); scanf(%c,choice); } getchar(); printf(请输入8位密钥:\n); gets(InputKey); while(InputKey[7]==\0||InputKey[8]!=\0) { printf(您输入的密钥位数有误,请重新输

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档