DES加密实验报告.docx
- 文档编号:6187800
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:15
- 大小:24.33KB
DES加密实验报告.docx
《DES加密实验报告.docx》由会员分享,可在线阅读,更多相关《DES加密实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
DES加密实验报告
网络安全作业
题目des
学号
专业及班级
姓名
日期2012.04.14
加密算法网络工程0902班
一.des简介:
des是一个分组密码算法,使用64位密钥(除去8位奇偶校验,实际密钥长度为56
位)对64比特的数据分组(二进制数据)加密,产生64位密文数据。
des是一个对
称密码体制,加密和解密使用同意密钥,解密和加密使用同一算法(这样,在硬件与软
件设计时有利于加密单元的重用)。
des的所有的保密性均依赖于密钥。
二.des算法过程:
1.des的加密过程:
第一阶段:
初始置换ip。
在第一轮迭代之前,需要加密的64位明文首先通过初始置换ip
的作用,对输入分组实施置换。
最后,按照置换顺序,des将64位的置换结果分为左右
两部分,第1位到第32位记为l0,第33位到第64位记为r0。
第二阶段:
16次迭代变换。
des采用了典型的feistel结构,是一个乘积结构的迭代密码
算法。
其算法的核心是算法所规定的16次迭代变换。
des算法的16才迭代变换具有相
同的结构,每一次迭代变换都以前一次迭代变换的结果和用户密钥扩展得到的子密钥ki
作为输入;每一次迭代变换只变换了一半数据,它们将输入数据的右半部分经过函数f
后将其输出,与输入数据的左半部分进行异或运算,并将得到的结果作为新的有半部分,
原来的有半部分变成了新的左半部分。
用下面的规则来表示这一过程(假设第i次迭代所
得到的结果为liri):
li=ri-1;ri=li-1⊕f(ri-1,ki);在最后一轮左与右半部分并未变
换,而是直接将r16l16并在一起作为未置换的输入。
第三阶段:
逆(初始)置换。
他是初始置换ip的逆置换,记为ip-1。
在对16次迭代的
结果(r16l16)再使用逆置换ip-1后,得到的结果即可作为des加密的密文y输出,
即y=ip-1(r16l16)。
2.des解密过程:
des的解密算法与其加密算法使用的算法过程相同。
两者的不同之处在于解密时子密
钥ki的使用顺序与加密时相反,如果子密钥为k1k2...k16,那么解密时子密钥的使用
顺序为k16k15...k1,即使用des解密算法进行解密时,将以64位密文作为输入,第1
次迭代运算使用子密钥k16,第2次迭代运算使用子密钥k15,......,第16次迭代使
用子密钥k1,其它的运算与加密算法相同。
这样,最后输出的是64位明文。
三.des代码实现(程序):
1.新建头文件des_encode.h
内容如下:
voidencodemain();//encodemainfunction
voiddecodemain();//sorry,ithasnotused
voiddecode(int*str,int*keychar);//decode:
input8chars,8keychars
voidencode(int*str,int*keychar);//encode:
input8chars,8keychars
voidkeybuild(int*keychar);//createkeyarray
voidstrtobin(int*midkey,int*keychar);//changeintobinary
voidkeycreate(int*midkey2,intmovebit,inti);//callbykeybuild
voidencodedata(int*ldata,int*rdata,int*srt);//encodedatafunction
voidf(int*rdata,int*key);//ffunction
voidexpand(int*rdata,int*rdatap);//expandfunction
voidexchanges(int*rdatap,int*rdata);//s-diagramchange
voidexchangep(int*rdata);//pchange
voidfillbin(int*rdata,intn,ints);
voiddecodedata(int*str,int*ldata,int*rdata);//decodedatafrombinary
intip1[]={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};
intip2[]={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};
ints[][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}
},{
{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}
},{
{10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8},
{13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1},
{13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7},
{1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12}
},{
{7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15},
{13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9},
{10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4},
{3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14}
},{
{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9},
{14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6},
{4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14},
{11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3}
},{
{12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11},
{10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8},
{9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6},
{4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13}
},{
{4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1},
{13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6},
{1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2},
{6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12}
},{
{13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7},
{1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2},
{7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8},
{2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11}
}};
intex[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};intp[32]={16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25};
intpc1[56]={57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,
19,11,3,60,52,44,36,63,55,47,39,31,33,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4};
intpc2[48]={14,17,13,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32};2.创建des.cpp
内容如下:
#include<stdio.h>
#include<string.h>
#includeaa.h
intkey[16][48];
charstr[8];
voidmain()//mainfunction
{
encodemain();
}
voidencodemain()//encodemainfunction
{
inti;
charkeychar[8];
intkey2[8];
intstrkey[8];
printf(请输入8个要加密的字符:
\n);
for(i=0;i<8;i++)
scanf(%c,&str[i]);
getchar();
for(i=0;i<8;i++)
strkey[i]=str[i];
printf(\n输入明文的十六进制为:
\n);
for(i=0;i<8;i++)
printf(%10x,strkey[i]);
printf(\n请输入密钥(8个字符):
\n);
for(i=0;i<8;i++)
scanf(%c,&keychar[i]);
for(i=0;i<8;i++)
key2[i]=keychar[i];
getchar();
//printf(%c,keychar[i]);
encode(strkey,key2);
printf(\n加密后十六进制密文是:
\n);
for(i=0;i<8;i++)
printf(%10x,strkey[i]);
printf(\n\n清输入解密密码\n);
for(i=0;i<8;i++)
scanf(%c,&keychar[i]);
for(i=0;i<8;i++)
key2[i]=keychar[i];
decode(strkey,key2);
for(i=0;i<8;i++)
printf(%10x,strkey[i]);
for(i=0;i<8;i++)
str[i]=strkey[i];
printf(\n明文为:
\t);
for(i=0;i<8;i++)
printf(%c,str[i]);
printf(\n\n);
}
voidkeybuild(int*keychar){//createkeyarrayinti,j;
intmovebit[]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};
intmidkey2[56];
intmidkey[64];
strtobin(midkey,keychar);
for(i=0;i<56;i++)
midkey2[i]=midkey[pc1[i]-1];
for(i=0;i<16;i++)
keycreate(midkey2,movebit[i],i);
}
voidstrtobin(int*midkey,int*keychar){//changeintobinaryinttrans[8],i,j,k,n;
n=0;
for(i=0;i<8;i++){
j=0;
while(keychar[i]!
=0){
trans[j]=keychar[i]%2;
keychar[i]=keychar[i]/2;篇二:
des加密实验报告
《网络安全技术》实验篇三:
用c实现des的加密实验报告
一、实验目的
1、对算法描述可进行充分理解,精确理解算法的各个步骤。
2、完成des软件算法的详细设计。
3、用c++完成算法的设计模块。
4、编制测试代码。
二、实验内容
根据des加密标准,用c++设计编写符合des算法思想的加密程序,并进行测试、分析,并尽量考虑程序的优化。
三、方案设计
des的总体方案如下图所示。
与其他任何一种加密方案一样,加密函数有两个输入:
待加密的明文和密钥。
在这里,明文的长度必须为64bit,而密钥的长度为56bit.
des加密算法的一般描述
观察上图的左边部分,可以看到明文的处理阶段经过了三个阶段。
首先64bitde明文经过了一个初始置换ip后,比特重排产生了经过置换的输入。
接下来的一个阶段是由对同一个函数进行16次循环组成的,这个函数本身既包含有置换又包含有替代函数。
最后一个循环(第16个)的输出由64bit组成,它是输入明文和密钥的函数,这个输出的左边和右边
两个部分经过交换后就得到预输出。
最后,预输出通过一个逆初始置换就生成了64bit的密文,这个置换是初始置换的逆置换。
上图的右半部分给出了54bit密钥的使用方式,密钥首先通过一个置换函数,接着对于16个循环的每一个,都通过一个循环左移操作和一个置换草所的组合产生出一个密钥k1。
对每一个循环来说,置换函数是相同的,但由于密钥比特的重复移位,产生的子密钥并不相同。
(a)初始置换
585042342618102
605244362820124
625446383022146
643648403224168
57494133251791
595143352719113
615345372921135
635547393123157
(b)逆初始置换
408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725
(c)des的s盒子的定义:
s1
1441312151183106125907
0157414213110612119538
4114813621115129731050
1512824917511314100613
s2
1518146113497213120510
3134715281412011069115
0147111041315812693215
1381013154211671205149
s3
1009146315511312711428
1370934610285141211151
1364981530111212510147
1101306987415143115212
s4
7
13
10
2
s5
2124171011685315130149
1411212471315015103986
4211110137815912563014
1181271141163150910453
s6
1211015926801334147511
1015427129561131401138
9141552812370410113116
4321295151011141750813
s7
4112141508133129751061
130174911014351221586
1411131237141015680592
6111381410795015142312
s8
1328461511110931450127
1151381037412561101492
7114191214206101315358
2114741081315129035611
密钥的产生:
(a)舍弃64位密钥中的奇偶校验位,根据下表(pc-1)进行密钥变换得到561314306910128511124158115615034721211014969012117131513145284150610113894511127214位的密钥,在变换中,奇偶校验位以被舍弃。
置换选择1(pc-1)
5749413325179
1585042342618
1025951433527
1911360524436
63554739312315
7625446383022
1466153453729
211352820124
(b)置换选择2(pc-2)
1417112415
3281562110
2319124268
1672720132
415231374755
304051453348
444939563453
464250362932
(c)左移调度
i:
12345678910111213141516
左移位数:
1122222212222221
四、详细设计
算法1
des_enc(x64)
exterualip,inip,exp,pos,sbox1,......sbox8
globalk48[1-16]
state64<-ip(x64)
fori<-1to16
do{令state64=sl32||sr32
temp48<-ext(sl32)
temp48<=temp48+k48[i]
令temp48=t6[1]||t6[2]||t6[3]||t6[4]||t6[5]||t6[6]||t6[7]||t6[8]t4[1]<-sbox[1](t6[1])
t4[2]<-sbox[2](t6[2])
t4[3]<-sbox[3](t6[3])
t4[4]<-sbox[4](t6[4])
t4[5]<-sbox[5](t6[5])
t4[6]<-sbox[6](t6[6])
t4[7]<-sbox[7](t6[7])
t4[8]<-sbox[8](t6[8])
temp32=t4[1]||t4[2]||t4[3]||t4[4]||t4[5]||t4[6]||t4[7]||t4[8]temp32<=pos(temp32)
sr32<-temp32(异或)sl32
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DES 加密 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)