DES算法实验报告

时间:2024.5.13

DES算法实验报告

姓 名:

学 号:

课程名称:计算机安全技术指导教师:王景中

王超 09101020107 1

目录

DES算法实验报告 .......................................................................................................................... 1

目录 .................................................................................................................................................. 2

一、 DES算法简介 .................................................................................................................. 1

二、 DES算法原理 .................................................................................................................. 1

(一) 加密 ............................................................................................................................... 1

(二) 子密钥Ki(48bit)的生成算法 ....................................................................................... 4

三、 流程图 ............................................................................................................................... 5

(一) 加密流程图 ................................................................................................................... 5

(二) 子密钥生成流程图 ....................................................................................................... 6

(三) 解密流程图 ................................................................................................................... 6

(四) 功能流程图 ................................................................................................................... 7

四、 实验说明 ........................................................................................................................... 8

(一) 运行环境 ....................................................................................................................... 8

(二) 试验目的 ....................................................................................................................... 8

(三) 功能说明 ....................................................................................................................... 8

(四) 程序运行效果图 ........................................................................................................... 8

五、 主要函数 ........................................................................................................................... 9

六、 小结 ................................................................................................................................. 17 2

一、 DES算法简介

DES(Data Encryption Standard,DES)起源于19xx年美国国家标准局(NBS)征求国家密码标准方案。DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是19xx年美国IBM公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密,如果Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式作为DES的输出结果。在使用DES时,双方预先约定使用的“密码”即Key,然后用Key去加密数据;接收方得到密文后使用同样的Key解密得到原数据,这样便实现了安全性较高的数据传输。DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。

DES( Data Encryption Standard)算法,于19xx年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,仍然发挥着余热。

二、 DES算法原理

(一) 加密

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其功能是把输入的64位数据块按位重新组合,并把输出分为L0 、R0两部分,每部分各长32位,其置换规则见下表:

58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,

1

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,

即将输入的第58位换到第一位,第50位换到第2位,??,依此类推,最后一位是原来的第7位。 L0、R0则是换位输出后的两部分,L0是输出的左32位,R0 是右32位,例:设置换前的输入值为D1D2D3??D64,则经过初始置换后的结果为:L0=D550??D8;R0=D57D49...D7。

经过26次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如下表所示:

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,

放大换位表

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,

单纯换位表

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,

在f(Ri,Ki)算法描述图中,S1,S2...S8为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,2......8)的功能表: 选择函数Si

S1:

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,

2

15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13, S2:

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, S3:

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, S4:

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, S5:

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, S6:

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, S7:

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,

3

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,

S8:

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,

(二) 子密钥Ki(48bit)的生成算法

初始Key值为64位,但DES算法规定,其中第8、16、......64位是奇偶校验位,不参与DES运算。故Key 实际可用位数便只有56位。即:经过缩小选择换位表1的变换后,Key 的位数由64 位变成了56位,此56位分为C0、D0两部分,各28位,然后分别进行第1次循环左移,得到C1、D1,将C1(28位)、D1(28位)合并得到56位,再经过缩小选择换位2,从而便得到了密钥K0(48位)。依此类推,便可得到K1、K2、......、K15,不过需要注意的是,16次循环左移对应的左移位数要依据下述规则进行:

循环左移位数1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1

以上介绍了DES算法的加密过程。 DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、??,最后一次用K0,算法本身并没有任何变化。

(三) 解密

DES的解密过程和DES的加密过程完全类似,只不过将16圈的子密钥序列K1,K2??K16的顺序倒过来。即第一圈用第16个子密钥K16,第二圈用K15,其余类推。

4

三、 流程图

(一) 加密流程图

DES算法实验报告

5

(二) 子密钥生成流程图

DES算法实验报告

(三) 解密流程图

DES算法实验报告

6

功能流程图

DES算法实验报告

7 (四)

DES算法实验报告

DES算法实验报告

四、 实验说明

(一) 运行环境

服务器

操作系统:windows 或linux均可

(二) 试验目的

加解密算法程序; 了解DES算法的优缺点及应用场合,理解并掌握DES算法的原理,编写DES

(三) 功能说明

任意长度字符的加密解密; 支持中文加密解密;

(四) 程序运行效果图

DES算法实验报告

8

五、 主要函数

#include <iostream>

#include<math.h>

#include<string.h>

using namespace std;

const static char IP_Table[] = { //IP_Table置换 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

};

const static char Final_Table[] = { //最终置换 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

};

const static char S_Box[8][64] = { //s_box

/* S1 */

{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},

/* S2 */

{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},

/* S3 */

{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,

9

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},

/* S4 */

{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},

/* S5 */

{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},

/* S6 */

{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},

/* S7 */

{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},

/* S8 */

{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} };

const static char Rar_Table[] = { //压缩置换

14, 17, 11, 24, 1, 5,

3, 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

};

10

const static char Exp_Table[] = { 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

};

const static char P_Table[]={ 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

};

const static char KeyRar_Table[]={ 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, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 };

//设置全局变量,16轮密钥

bool key[16][48]={{0}};

void ByteToBit(bool *Out,char *In,int bits) {

int i;

for(i=0;i<bits;i++)

Out[i]=(In[i/8]>>(i%8))&1; }

void BitToByte(char *Out,bool *In,int bits) {

int i;

//扩展置换 //P置换 //字节到位转换函数 //位到字节转换函数 11

for(i=0;i<bits/8;i++)

Out[i]=0;

for(i=0;i<bits;i++)

Out[i/8]|=In[i]<<(i%8);

}

void Xor(bool *InA,const bool *InB,int length) //按位异或 {

for(int i=0;i<length;i++)

InA[i]^=InB[i];

}

void keyfc(char *In) //密钥生成函数

{

int i,j=0,mov,k,m;

bool* key0 = new bool[56];

bool* keyin = new bool[64];

bool temp;

ByteToBit(keyin,In,64); //字节到位的转换

for(i=0;i<56;i++) //密钥压缩为56位 key0[i]=keyin[KeyRar_Table[i]-1];

for(i=0;i<16;i++) //16轮密钥产生

{

if(i==0||i==1||i==8||i==15)

mov=1;

else

mov=2;

for(k=0;k<mov;k++) //分左右两块循环左移 {

for(m=0;m<8;m++)

{

temp=key0[m*7];

for(j=m*7;j<m*7+7;j++)

key0[j]=key0[j+1];

key0[m*7+6]=temp;

}

temp=key0[0];

for(m=0;m<27;m++)

key0[m]=key0[m+1];

key0[27]=temp;

temp=key0[28];

for(m=28;m<55;m++)

key0[m]=key0[m+1];

key0[55]=temp;

}

12

for(j=0;j<48;j++) //压缩置换并储存

key[i][j]=key0[Rar_Table[j]-1];

}

delete[] key0;

delete[] keyin;

}

void DES(char Out[8],char In[8],bool Type)//加密核心程序,Type=0时加密,反之解密 {

bool* MW = new bool[64];

bool* tmp = new bool[32];

bool* PMW = new bool[64];

bool* kzmw = new bool[48];

bool* keytem = new bool[48];

bool* ss = new bool[32];

int hang,lie,i;

ByteToBit(PMW,In,64);

for(int j=0;j<64;j++)

{

MW[j]=PMW[IP_Table[j]-1]; //初始置换

}

bool *Li=&MW[0],*Ri=&MW[32];

for(i=0;i<48;i++) //右明文扩展置换

kzmw[i]=Ri[Exp_Table[i]-1];

if(Type==0) //DES加密过程 {

for(int lun=0;lun<16;lun++)

{

for(i=0;i<32;i++)

ss[i]=Ri[i];

for(i=0;i<48;i++) //右明文扩展置换 kzmw[i]=Ri[Exp_Table[i]-1];

for(i=0;i<48;i++)

keytem[i]=key[lun][i];

Xor(kzmw,keytem,48);

/*S盒置换*/

for(i=0;i<8;i++)

{

hang=kzmw[i*6]*2+kzmw[i*6+5];

lie =kzmw[i*6+1]*8+kzmw[i*6+2]*4+kzmw[i*6+3]*2+kzmw[i*6+4]; tmp[i*4+3]=S_Box[i][(hang+1)*16+lie]%2;

13

tmp[i*4+2]=(S_Box[i][(hang+1)*16+lie]/2)%2;

tmp[i*4+1]=(S_Box[i][(hang+1)*16+lie]/4)%2;

tmp[i*4]=(S_Box[i][(hang+1)*16+lie]/8)%2;

}

for(i=0;i<32;i++) //P置换

Ri[i]=tmp[P_Table[i]-1];

Xor(Ri,Li,32); //异或

for(i=0;i<32;i++) //交换左右明文

{

Li[i]=ss[i];

}

}

for(i=0;i<32;i++)

{

tmp[i]=Li[i];

Li[i]=Ri[i];

Ri[i]=tmp[i];

}

for(i=0;i<64;i++)

PMW[i]=MW[Final_Table[i]-1];

BitToByte(Out,PMW,64); //位到字节的转换

}

else //DES解密过程

{

for(int lun=15;lun>=0;lun--)

{

for(i=0;i<32;i++)

ss[i]=Ri[i];

for(i=0;i<48;i++) //右明文扩展置换 kzmw[i]=Ri[Exp_Table[i]-1];

for(i=0;i<48;i++)

keytem[i]=key[lun][i];

Xor(kzmw,keytem,48);

/*S盒置换*/

for(i=0;i<8;i++)

{

hang=kzmw[i*6]*2+kzmw[i*6+5];

lie =kzmw[i*6+1]*8+kzmw[i*6+2]*4+kzmw[i*6+3]*2+kzmw[i*6+4]; tmp[i*4+3]=S_Box[i][(hang+1)*16+lie]%2;

tmp[i*4+2]=(S_Box[i][(hang+1)*16+lie]/2)%2;

tmp[i*4+1]=(S_Box[i][(hang+1)*16+lie]/4)%2;

14

tmp[i*4]=(S_Box[i][(hang+1)*16+lie]/8)%2;

}

for(i=0;i<32;i++) //P置换

Ri[i]=tmp[P_Table[i]-1];

Xor(Ri,Li,32); //异或

for(i=0;i<32;i++) //交换左右明文

{

Li[i]=ss[i];

}

}

for(i=0;i<32;i++)

{

tmp[i]=Li[i];

Li[i]=Ri[i];

Ri[i]=tmp[i];

}

for(i=0;i<64;i++)

PMW[i]=MW[Final_Table[i]-1];

BitToByte(Out,PMW,64); //位到字节的转换

}

delete[] MW;

delete[] tmp;

delete[] PMW;

delete[] kzmw;

delete[] keytem;

delete[] ss;

}

bool RunDes(char *Out, char *In, int datalength, char *Key, bool Type) //加密运行函数,判断输入以及对输入文本8字节分割

{

if( !( Out && In && Key && (datalength=(datalength+7)&0xfffffff8) ) )

return false;

keyfc(Key);

for(int i=0,j=ceil(datalength/8); i<j; ++i,Out+=8,In+=8)

DES(Out, In, Type);

return true;

}

int main()

15

char* Ki = new char[8];

char shuru[200];

char *Enter;

char* Print = new char[400];

int len = 0;

int i_mf,i=0;

cout << "输入原始字符串:" <<"\n"; cin >> shuru;

Enter=new char[strlen(shuru)+1]; for(i=0;i<strlen(shuru);i++)

{

Enter[i]=shuru[i];

}

Enter[i]='\0';

len=i+1;

cout << "请输入密钥(8位):" <<"\n"; for(i_mf=0;i_mf<8;i_mf++)

cin >> Ki[i_mf];

cout << "\n";

RunDes(Print,Enter,len,Ki,0);//加密

cout << "----明文----" << "\n"; for(i_mf=0;i_mf<len;i_mf++) cout << Enter[i_mf];

cout << "\n\n";

cout << "----密文----" << "\n"; for(i_mf=0;i_mf<len;i_mf++) cout<<Print[i_mf];

cout << "\n\n";

//此处进行不同密钥输入测试

cout << "请输入密钥(8位):" <<"\n"; for(i_mf=0;i_mf<8;i_mf++)

cin >> Ki[i_mf];

cout << "\n";

RunDes(Enter,Print,len,Ki,1);//解密

cout << "----明文----" << "\n"; for(i_mf=0;i_mf<len;i_mf++)

16 {

}

cout << Enter[i_mf]; cout << endl; delete[] Ki; delete[] Print; return 0;

六、 小结

通过这次课程设计,我从中了解了DES算法的加密、解密过程,梳理了这段时间所学的安全知识,有了更好的提高。

17

更多相关推荐:
算法实验报告

算法设计与分析实验报告班级姓名学号年月日目录实验一二分查找程序实现03页实验二棋盘覆盖问题分治法08页实验三01背包问题的动态规划算法设计11页实验四背包问题的贪心算法14页实验五最小重量机器设计问题回溯法17...

算法设计实验报告

算法设计课程报告课题名称算法设计与实现课题负责人名学号张樱紫0743111317同组成员名单角色无指导教师左劼评阅成绩评阅意见提交报告时间20xx年12月23日课程名称算法设计学生姓名张樱紫学生学号074311...

中南大学--算法实验报告

中南大学--算法实验报告,内容附图。

遗传算法实验报告

遗传算法实验报告姓名:**学号:**一、实验目的:熟悉和掌握遗传算法的运行机制和求解的基本方法。遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文的适者生存的理论,模拟自然进化过程来寻…

算法设计实验报告

1hanoi塔packagesyyimportjavautilpublicclassHanoipublicstaticvoidmoveintnintaintbSystemoutprintlnquot把第quot...

算法实验报告

算法导论实验报告实验一快速排序1问题描述实现对数组的普通快速排序与随机快速排序2算法原理设要排序的数组是A0AN1首先选取一个数据普通快排选择的是最后一个元素随记快排是随机选择一个元素作为关键数据然后将所有比它...

算法分析与设计实验报告

排序问题求解实验日志实验题目排序问题求解实验目的1以排序分类问题为例掌握分治法的基本设计策略2熟练掌握一般插入排序算法的实现3熟练掌握快速排序算法的实现4理解常见的算法经验分析方法实验要求1生成实验数据要求编写...

计算机操作系统银行家算法实验报告

计算机操作系统实验报告一、实验名称:银行家算法二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。…

算法综合性实验报告模板

综合性设计性实验报告姓名刘海香学号20xx08003107专业软件工程班级20xx级1班实验课程名称算法分析与设计指导教师及职称黎明讲师开课学期20xx至20xx学年下学期上课时间20xx年3月21日至20xx...

计算机算法与设计分析实验报告

计算机算法与设计分析实验报告班级姓名学号目录实验一分治与递归11基本递归算法12棋盘覆盖问题23二分搜索34实验小结5实验二动态规划算法51最长公共子序列问题52最大子段和问题73实验小结8实验三贪心算法81多...

算法实验报告

实验一分治与递归算法的应用一实验目的1掌握分治算法的基本思想分治合技巧和效率分析方法2熟练掌握用递归设计分治算法的基本步骤基准与递归方程3学会利用分治算法解决实际问题二实验内容金块问题老板有一袋金块共n块n是2...

图像Demosaic算法实验报告

图像Demosaic算法一马赛克成因一般的数码相机采用CDC或CMOS做传感器约占数码相机总成本的10一25是相机的最昂贵的部件之一quot对于专业相机如用在科学或医学中的使用了三个传感器每一个像素点都可以直接...

算法实验报告(32篇)