- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息安全加密实验报告
重庆交通大学实验报告
班 级: 计信专业2012级2班
学 号: 2
姓 名: 娄 丽 梅
实验项目名称:DES加解密程序设计与实现
实验项目性质: 设计性(验证性)
实验所属课程: 信息安全
实验室(中心): 软件实验室
指 导 教 师 : 米波
实验完成时间: 2014 年12
教师评阅:
教师评阅:
□实验目的明确; □操作步骤正确; □设计文稿(表格、程序、数据库、网页)符合要求;
□保存路径正确; □实验结果符合要求 □实验分析总结全面; □实验报告规范;
签名: 年 月 日
实验成绩:
一、实验目的
1、理解DES加密与解密的程序设计算法思想。
2、编写DES加密与解密程序,实现对明文的加密与解密,加深对数据加密与解密的理解,掌握DES加密算法思想,提高网络安全的编程能力。
二、实验主要内容及原理
(一)实验内容
1、掌握DES算法;
2、编写DES算法。
(二)实验原理
1、初始置换
初始置换在第一轮运算之前执行,对输入分组实施如下表所示的变换。此表应从左向右、从上向下读。在将这64位数据分为左右两部分,每部分分别为32位,将左32位留下,将右32位按照下表进行排列
2、密钥置换
一开始,由于不考虑每个字节的第8位,DES的密钥由64位减至56位。每个字节第8位可作为奇偶校验位以确保密钥不发生错误。接着,56位密钥被分成两部分,每部分28位。然后,根据轮数,这两部分分别循环左移l位或2位。在DES的每一轮中,从56位密钥选出48位子密钥(Sub Key)。
3、S盒置换
当产生了48位密钥后就可以和右边32位明文进行异或运算了,得到48位的密文。
再经过下论的S盒跌带,其功能是把6bit数据变为4bit数据,每个S盒是一个4行、16列的表。盒中的每一项都是一个4位的数。S盒的6个位输入确定了其对应的输出在哪一行哪一列。
4、P盒置换
S盒代替运算后的32位输出依照P盒进行置换。该置换把每输入位映射到输出位,任意一位不能被映射两次,也不能被略去,这个置换叫做直接置换。
5、再次异或运算
最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始另一轮。
6、当进行到16轮后,最终进行一次末置换,形成密文
三、实验过程简述
利用编程语言实现DES加解密算法。
编程:包含的功能函数有:
enum {ENCRYPT,DECRYPT};// ENCRYPT:加密,DECRYPT:解密
void Des_Run(char Out[8], char In[8], bool Type=ENCRYPT);
// 设置密钥
void Des_SetKey(const char Key[8]);
static void F_func(bool In[32], const bool Ki[48]);// f 函数
static void S_func(bool Out[32], const bool In[48]);// S 盒代替
// 变换
static void Transform(bool *Out, bool *In, const char *Table, int len);
static void Xor(bool *InA, const bool *InB, int len);// 异或
static void RotateL(bool *In, int len, int loop);// 循环左移
// 字节组转换成位组
static void ByteToBit(bool *Out, const char *In, int bits);
// 位组转换成字节组
static void BitToByte(char *Out, const bool *In, int bits);
//置换IP表
const static char IP_Table[64] = {
58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,
61,53,45,37
您可能关注的文档
最近下载
- 教案:ABB[a]-J-8ABB机器人高级编程.docx VIP
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读.pptx
- 优秀工程项目管理经验分享.pptx VIP
- JGJT117-2019民用建筑修缮工程查勘与设计标准.docx VIP
- 2021年5月江苏省苏州工业园区初三调研(中考一模)英语试卷及答案.pdf VIP
- 【PDF】2022 年职业教育国家级教学成果奖申报.pdf VIP
- 电机基础知识入门 [(日)井出万盛 著] 2012年_部分10.pdf VIP
- 湘教版七年级地理上册第三章第二节气温和降水课件(共27张PPT)讲解.ppt VIP
- 科研项目中期检查报告书.docx VIP
- 丹江口水库现代化运行管理矩阵构建实践.docx VIP
文档评论(0)