- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)