没有合适的资源?快使用搜索试试~ 我知道了~
实验1-DES密码算法实现与测试.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 28 浏览量
2023-02-22
22:38:33
上传
评论
收藏 30KB DOCX 举报
温馨提示
试读
12页
。。。
资源推荐
资源详情
资源评论
网络攻击与防御
实验 1 DES密码算法实现与测试
一、实验目的与意义
4.研究 DES 算法,学习并论证了 DES 加密过程,知道 DES 加密的具体操作
http://wenku.baidu.com/view/80affdc49ec3d5bbfd0a74a9.html
二、实验环境
WindowsXP-SP2
Microsoft visualc++6.0
三、实验原理
DES 算法通信双方通信前共同拟定一个密钥,不对第三方公开,并且消息发
送前都通过该密钥加密,到达后也通过该密钥解密。该算法利用一个 56+8 奇偶
校验位(第 8,16,24,32,40,48,56,64 位)=64 位的密钥对以 64 位为单位的块数据
进行加解密操作。
具体实现过程是将 DES 的数据分组长度为 64 位,输入的是 64 位的明文,在
64 位密钥的控制下产生 64 位的密文;反之输入 64 位的密文,输出 64 位的明
文。64 位的密钥中含有 8 个位的奇偶校验位,所以实际有效密钥长度为 56 位。
明文数据经过初始置换 IP、16 圈迭代的乘积变换、逆初始置换 IP-1 以及 16 个
子密钥产生器后得到密文数据。在初始置换 IP 时,将 64 位明文的位置进行置换,
得到一个乱序的 64 位明文组,而后分成左右两段,每段 32 位,用 L0 和 R0 表
示。DES 的加密函数 f 对 32 位的段操作:首先将这 32 位的段选择扩展运算成
48 位的段;其次将这 48 位的段和子密钥产生器输出的 48 位的密钥进行组合并
将组合结果作为 8 个不同 S-盒的输入。每个 S-盒的输入是 6 位,输出是 4 位;
然后将 S-盒的 32 位做置换作为加密函数 f 的输出。经过 16 圈迭代,最终产生
64 位密文。
四、实验的步骤与调试方法
DES 设计思路以及解决问题的方法共七步
1.输入 64 个二进制位明码文数据保存为 8*8 的二维数组
2.分成左右两个大小相等的部分,每部分为一个 32 位二进制的数据块
3.首先按照一定规则对密钥进行压缩置换,得到 48 位子密钥
4.S 盒置换
5.P 盒置换
请给出至少 3 组数据的加解密结果。明文,密文与密钥分别存放在三个文件。
六.实验报告要求
除了上述内容以外,请给出自己的 DES 算法设计中遇到的问题与难点描述。
并给出程序流程与源代码。
#include "stdio.h"
#include "string.h"
#define uchar unsigned char
/****************************************************************************
******************************明文转换声明部分*******************************/
//IP1置换表
int IP_1[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, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7};
//IP2逆置换表
int IP_2[64]={40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25};
//E扩展置换表
int E_case[48]={32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1};
//S盒压缩
int S1[4][16]={14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13};
int S2[4][16]={15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9};
剩余11页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6450
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功