当前位置:文档之家› des算法实现课程设计大学毕设论文

des算法实现课程设计大学毕设论文

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 };
//结尾置换表
int IP_1[]= { 40, 8, 48, 16, 56, 24, 64, 32,
1) 初始置换IP
这一部分很简单,IP(initial permutation)是一个8x8的置换表:
int IP[]= { 58, 50, 42, 34, 26, 18, 10, 2,
60,52, 44, 36, 28, 20, 12, 4,
62,54, 46, 38, 30, 22, 14, 6,
bitset<48> subKey[16];//存放16轮子密钥
//初始置换表
int IP[]= { 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,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25};
四、关键技术难点分析
在DES算法的实现中,我用C++ STL中的bitset来操作二进制位。 下面是对一个64位 数据进行加密解密的源代码:
bitset<64> key;// 64位密钥

内容详实程度
文字表达熟练程度
回答问题准确度
简 短 评 语
教师签名
年月

评分等级
备注评分等级有五种:优秀、源自良好、中等、及格、不及格
、课题内容和要求
对称加密就是加密和解密所用的密钥是一样的, 加密的强度很大程度上在于密钥 的强度以及加密算法的保密,最常见的对称加密算法有DES IDEA、RC4 RC5等。本
程序主要采取对数据的位操作的形式,把明密文文件中的内容以字节为单位读取,每
次读取8个byte共65bits,然后使用标准DES的算法依次对读取的64bits明密文进出加
这个程序的关键在DES算法的操作,主要有下的主要步骤:
1.初始置换IP;
2.子密钥Ki的获取;
3.密码函数f;
4.尾置换IP-1;
下面是具体的几个过程:
2) 子密钥Ki的获取
用户输出的密钥是64位的,根据密钥置换表PC-1,将64位变成56位密钥。 (去掉了奇偶校验位)将PC-1置换得到的56位密钥,分为前28位C0和后28位D0,分别对它们进行循环左移,CO左移得到C1 ,D0左移得到D1。将C1和D1合并成56位, 然后通过PC-2表进行压缩置换,得到当前这一轮的48位子密钥K1。然后对C1和D1进行左移和压缩置换,获取下一轮的子密钥……一共进行16轮,得到16个48位的子 密钥。
3) 密码函数f
密码函数f(R, K)接受两个输入:32位的数据和48位的子密钥。然后:
通过表E进行扩展置换,将输入的32位数据扩展为48位;
将扩展后的48位数据与48位的子密钥进行异或运算;
将异或得到的48位数据分成8个6位的块,每一个块通过对应的一个S表产 生一个4位的输出。
其中,每个S表都是4行16列。具体的置换过程如下:把6位输入中的第1位和第6位取出来行成一个两位的二进制数x,作为Si表中的行数(0~3);把6位 输入的中间4位构成另外一个二进制数y,作为Si表的列数(0~15);查出Si表 中x行y列所对应的整数,将该整数转换为一个4位的二进制数。
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,
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 };
根据表中的规定, 将输入的64位明文重新进行排序, 即将第58位放到第1位, 第50位放到第2位……以此类推。初始置换以后得到的是一个64位的输出。
通达学院课程设计
(2016/ 2017学年 第1学期)
题 目:
专业计算机科学与技术(信息安全)
学生姓名
班级学号
指导教师王 波
指导单位计算机学院信息安全系
日期
评分项
优秀
良好
中等

遵守机房规章制度

上机时的表现
学习态度
程序准备情况

程序设计能力
团队合作精神
课题功能实现情况

算法设计合理性
用户界面设计
报告书写认真程度
把通过S表置换得到的8个4位连在一起,形成一个32位的数据。然后将该32位数据通过表P进行置换(称为P-置换),置换后得到一个仍然是32位的结果数 据,这就是f(R,K)函数的输出。
4) 尾置换IP-1
合并L16和R16得到一个64位的数据,再经过尾置换后得到的就是64位的 密文。注意:要将L16和R16合并成R16L16(即左右互换)。尾置换表IP-1如下:int IP_1[]= {40, 8, 48, 16, 56, 24, 64, 32,
设计题要求实现DES加密和解密算法,能对文件实现加解密。
二、对设计要求的理解
DES是一个分组密码算法,使用64位密钥(除去8位奇偶校验,实际密钥长度为56位)对64比特的数据分组(二进制数据)加密,产生64位密文数据。DES是一个对称密 码体制,加密和解密使用同意密钥,解密和加密使用同一算法(这样,在硬件与软件设计 时有利于加密单元的重用)。DESK所有的保密性均依赖于密钥。
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,
相关主题