密码学课程设计实验报告.doc密码学课程设计
实验报告
标准DES加解密实现
弱密钥过滤
短块处理(密文挪用)
3圈DES差分攻击
计算机科学与技术学院
信息安全0801班
李晨
U200714977
指导老师:崔国华
2011年3月28日
目录
一、 实验平台与环境 4
二、 DES加解密相关内容 4
1. 标准DES原理与编程实现 4
标准DES基本框架 4
G函数实现 8
内部密钥生成 9
2. DES弱密钥过滤原理与编程实现(*) 11
弱密钥定义 11
弱密钥过滤程序实现 11
3. DES短块处理(密文挪用)原理与编程实现 12
密文挪用加解密原理 12
对于小于64bit数据块的处理 17
4. 整体界面设计 17
界面效果预览 17
实现特点 18
1) DES加解密、弱密钥过滤、短块处理完全集成 18
2) 支持数据块操作和文件操作 18
3) 密钥校验功能 18
4) 随机密钥产生功能 18
5. 程序主体设计 18
类BaseCode 18
类DESCode 20
类DESHandle 22
6. 实现功能测试 23
短块处理 23
数据块加解密 25
文件加解密 25
弱密钥过滤 26
随机密钥生成 27
密钥校验 27
三、 3圈DES差分攻击(**) 29
1. 3圈DES差分攻击原理 29
2. 差分表构造 30
3. 程序实现 32
输入数据结构与管理 32
穷举情况统计 33
具体破解 36
4. 整体界面设计 39
界面预览 39
功能特色 39
1) 忽略初始和末置换的简单DES实现 39
2) 适应任意多组破解数据的设计 39
3) 穷举情况的提醒 40
5. 实现功能测试 40
四、 总结 42
1. 加深了对DES的了解 42
2. 通过差分攻击代码实现,理解了差分的基本原理 42
3. 应该更好得去把握一个问题 42
4. 设计能力有待加强 42
附:核心类声明源代码 42
实验平台与环境
操作系统:Windows7
开发平台:Microsoft Visual Studio 2008
界面设计:MFC
核心代码:C++编写
Rn
Ln
IP逆置换
输出数据
输入数据
IP置换
L0
R0
G函数
R1
L1
逐轮加密…….
Ln
Rn
内部密钥
DES加解密相关内容
标准DES原理与编程实现
标准DES基本框架
置换函数\src\
//////////////////////////////////////////////////////////////////////////
// 功能:实现函数置换
// 参数:
// _in :输入数据
// _out :输出数据
// _replace:置换数组
// _length :数据长度,以字节为单位
// 返回值:
// 总是返回0
// 说明:
// 输入数据、输出数据、置换数组的长度必须相同
// 编写者:李晨
// 完成时间:2011/2/14
// 修改时间:2011/2/16(测试通过)
//////////////////////////////////////////////////////////////////////////
int BaseCode::Replace(char* _in, char* _out,const int _replace[],int _length)
{
// count_输入数据中的数组位置
// num_输入数据比特中位置
int count_ = 0,num_ = BYTESIZE;
// 逐位获得输出数据
for(int i = 0; i < _length / BYTESIZE; i++)
{
for(int j = BYTESIZE - 1; j >= 0; j--)
{
// 获得置换位置
count_ = (_replace[i * BYTESIZE + BYTESIZE - j - 1] - 1) / BYTESIZE;
num_ = (_replace[i * BYTESIZE + BYTESIZE - j - 1] - 1) % BYTESIZE;
// 获得输入数据的值
char mask_ = 1;
mask_
密码学课程设计实验报告 来自淘豆网m.daumloan.com转载请标明出处.