des算法实验报告

时间:2024.4.30

NCUT2006

《计算机安全技术》

实验报告


一、实验内容:des加密解密算法实现

二、实验环境:

1、操作系统:Windows XP及以上

2、编程工具:Visual C++ 6.0

三、实验原理:

DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组, 密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

基本原理:其入口参数有三个:key、data、mode。 key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。

算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。

四、算法流程设计:

1、DES算法整体结构:

2、16轮迭代:

3、子密钥产生:

4、f函数:

五、算法实现:

1、部分函数定义:

static void F_func(bool In[], const bool Ki[]);// F 函数

static void S_func(bool Out[], const bool In[]);// S 盒代替

static void Transform(bool *Out, bool *In, const char *Table, int len);// 变换

static void Xor(bool *InA, const bool *InB, int len);// 异或

static void RotateL(bool *In, int len, int loop);// 循环左移

static void ByteToBit(bool *Out, const char *In, int bits);// 字节组转换成位组

static void BitToByte(char *Out, const bool *In, int bits);// 位组转换成字节组

static void BitToHex(char *Out,const bool *In, int bits);// 将二进制转换为十六进制

2、主要功能模块:

void Des_SetKey(const char Key[])

{    //生成子密钥

    static bool K[64], *KL = &K[0], *KR = &K[28];

    ByteToBit(K, Key, 64);

   

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

   {

        RotateL(KL, 28, LOOP_Table[i]);  //循环左移

        RotateL(KR, 28, LOOP_Table[i]);

        Transform(SubKey[i], K, PC2_Table, 48);  //PC2变换

    }

}

void Des_Run(char Out1[],char Out2[], char In[], bool Type)

{    //des加密解密过程

    static bool M[64], Tmp[32], *Li = &M[0], *Ri = &M[32];

    ByteToBit(M, In, 64);

    Transform(M, M, IP_Table, 64);   //IP置换

    if( Type == ENCRYPT ){   //加密

        for(int i=0; i<16; i++) {

            memcpy(Tmp, Ri, 32);

            F_func(Ri, SubKey[i]);   //F函数

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

            memcpy(Li, Tmp, 32);

        }

    }else{                  //解密

        for(int i=15; i>=0; i--) {

            memcpy(Tmp, Li, 32);

            F_func(Li, SubKey[i]);   //F函数

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

            memcpy(Ri, Tmp, 32);

        }

    }

    Transform(M, M, IPR_Table, 64);  //IP-1置换

    BitToByte(Out1, M, 64);          //Out1为字符形式密文

    BitToHex(Out2, M, 64);           //Out2为十六进制数形式密文

}

void F_func(bool In[], const bool Ki[])

{    //F函数

    static bool MR[48];

    Transform(MR, In, E_Table, 48);   //E扩展

    Xor(MR, Ki, 48);                  //异或密钥

    S_func(In, MR);                   //S盒代换

    Transform(In, In, P_Table, 32);   //P置换

}

3、调试中遇到的问题及解决办法

问题:通过BitToByte()函数转换只能看到字符形式的密文,为乱码。

解决办法:增加一个二进制和十六进制之间的转换函数BitToHex(),即可输出十六进制数形式的密文。

六、实验结果:

1、测试数据:明文:“信息安全”;密钥:“北方工大”。

2、测试结果:输出字符形式和十六进制数形式的密文;解密后的明文为“信息安全”;运行结果正确。

3、需要改进的问题:该des算法程序只能加密和解密8个字符长度以内的明文或密文,密钥也为8个字符长度,实用性差。


第二篇:DES密码算法实验报告


DES密码算法实验报告

一、算法实现平台

运行Windows操作系统的PC机的MicrosoftVisualC++编译环境

DES密码算法实验报告

DES密码算法实验报告

二、程序模块设计

DES密码算法实验报告

DES密码算法实验报告

DES密码算法实验报告

DES密码算法实验报告

三、实验心得

通过编程实现DES密码算法,加深了对DES密码体制的了解。更深入学习了DES密码算法的流程。

更多相关推荐:
DES算法代码及实验报告

南京信息工程大学实验实习报告实验名称DES算法实验报告实验实习日期20xx1213得分指导教师沈剑计算机系专业软件工程年级11班次3姓名张渊学号20xx23449311实验目的理解对称加解密算法的原理和特点理解...

DES加密算法实验报告

网络安全作业题目DES学号专业及班级姓名日期20xx0414加密算法网络工程0902班一DES简介DES是一个分组密码算法使用64位密钥除去8位奇偶校验实际密钥长度为56位对64比特的数据分组二进制数据加密产生...

DES算法实验报告

实验报告姓名xxxx学号0XXXXX班级XXXXXXX日期20xx11题目DES算法实验一实验环境1硬件配置处理器InterRCoreTMi52430MCPU240GHz4CPUs24GHz内存20xxMBRA...

实现DES加解密算法实验报告

实现DES加解密算法实验报告一DES加解密算法问题简介DES算法全称为DataEncryptionStandard即数据加密算法它是IBM公司于19xx年研究成功并公开发表的DES算法的入口参数有三个KeyDa...

DES算法实验报告

实验目的验证DES算法的加密解密计算过程和效果includeltstringhgtincludeltstdiohgtclassDESpublicDESvoidsetkeyconstunsignedcharvoi...

DES加密算法的简单实现实验报告

苏州科技学院电子与信息工程学院实验报告实验一实验课程名称实验名称实验报告一实验室名称电子学院213机房二实验项目名称DES加密算法的简单实现三实验学时2学时四实验原理DES的描述DES是一种分组加密算法他以64...

DES算法代码及实验报告

DES实验算法报告摘要1DES的简介DES密码实际上是Lucifer密码的进一步发展它是一种采用传统加密方法的区组密码它的算法是对称的既可用于加密又可用于解密美国国家标准局19xx年开始研究除国防部外的其它部门...

DES算法实验报告

DES算法实验报告姓名学号课程名称计算机安全技术指导教师王景中王超09101020xx71目录DES算法实验报告1目录2一DES算法简介1二DES算法原理1一加密1二子密钥Ki48bit的生成算法4三流程图5一...

DES算法实验报告

应用密码学课程实验报告学号姓名年级专业DES密码的实现一DES算法介绍DES算法为密码体制中的对称密码体制又被称为美国数据加密标准是19xx年美国IBM公司研制的对称密码体制加密算法明文按64位进行分组密钥长6...

des算法实验报告

DES算法实验报告一实验内容用C实现DES算法用于数据的加密和解密二实验思路1如何将8位明文转换为64位明文2如何实现初始置换IP和初始逆置换IP13如何进行各种迭代4如何产生密钥三实验步骤1定义已知数组IP置...

C语言实现DES算法实验报告

xx工程大学实验报告20xx20xx学年第一学期报告题目课程名称任课教员专业学号姓名二O一六年一月十八日一课程概述目的培养学员的编程能力理解算法原理要求给出DES算法的软件实现测试DES的加密速度二设计思路使用...

DES_加密解密算法的C++实现--实验报告

1实验一1实验题目利用CC编程实现DES加密算法或MD5加密算法我选择的是用C语言实现DES的加密算法2实验目的通过编码实现DES算法或MD5算法深入掌握算法的加密原理理解其实际应用价值同时要求用CC语言实现该...

des算法实验报告(19篇)