现代密码学-des加密算法 实验报告

现代密码学-des加密算法 实验报告

ID:14861296

大小:28.14 KB

页数:13页

时间:2018-07-30

现代密码学-des加密算法 实验报告_第1页
现代密码学-des加密算法 实验报告_第2页
现代密码学-des加密算法 实验报告_第3页
现代密码学-des加密算法 实验报告_第4页
现代密码学-des加密算法 实验报告_第5页
资源描述:

《现代密码学-des加密算法 实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、现代密码学实验报告院系:班级:姓名:学号:前言密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。密码学是一门古老而深奥的学问,按

2、其发展进程,经历了古典密码和现代密码学两个阶段。现代密码学(ModernCryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。DES加密算法的实现实验目的理解对称加密算法的原理和特点。实验原理DES是一种分组加密算法,所谓分组加密算法就是对一定大小的明文或密文来做加密或解密动作。而在DES这个加密系统中,每次加密或解密的分组大小均为64位,所以DES没有密文扩充的问题。对大于64位的明文只要按每64位一组进行切割,而对小于64位的明文只要在后面补“0”即可。另一方面,D

3、ES所用的加密或解密密钥也是64位大小,但因其中有8个位是用来作奇偶校验的,所以64位中真正起密钥作用的只有56位,密钥过短也是DES最大的缺点。DES加密与解密所用的算法除了子密钥的顺序不同外,其他部分完全相同。实验环境运行Windows或Linux操作系统的PC机。实验代码:-------------本实验采用56位密钥加密64位数据------------#include#include#include"bool.h"//位处理#include"tables.h"voidBitsCopy(bool*DatOut,bool*DatIn,int

4、Len);//数组复制voidByteToBit(bool*DatOut,char*DatIn,intNum);//字节到位voidBitToByte(char*DatOut,bool*DatIn,intNum);//位到字节voidBitToHex(char*DatOut,bool*DatIn,intNum);//二进制到十六进制64位to4*16字符voidHexToBit(bool*DatOut,char*DatIn,intNum);//十六进制到二进制voidTablePermute(bool*DatOut,bool*DatIn,constchar*Table,intNum)

5、;//位表置换函数voidLoopMove(bool*DatIn,intLen,intNum);//循环左移Len长度Num移动位数voidXor(bool*DatA,bool*DatB,intNum);//异或函数voidS_Change(boolDatOut[32],boolDatIn[48]);//S盒变换voidF_Change(boolDatIn[32],boolDatKi[48]);//F函数voidSetKey(charKeyIn[8]);//设置密钥voidPlayDes(charMesOut[8],charMesIn[8]);//执行DES加密voidKickDes

6、(charMesOut[8],charMesIn[8]);//执行DES解密intmain(){inti=0;charMesHex[16]={0};//16个字符数组用于存放64位16进制的密文charMyKey[8]={0};//初始密钥8字节*8charYourKey[8]={0};//输入的解密密钥8字节*8charMyMessage[8]={0};//初始明文/*-----------------------------------------------*/printf("Welcome!PleaseinputyourMessage(64bit):");gets(MyM

7、essage);//明文printf("PleaseinputyourSecretKey:");gets(MyKey);//密钥while(MyKey[i]!='')//计算密钥长度{i++;}while(i!=8)//不是8提示错误{printf("PleaseinputacorrectSecretKey!");gets(MyKey);i=0;while(MyKey[i]!='')//再次检测{i++;}}SetKey(MyKey);//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。