表密码算法c语言实验报告,广东工业大学网络工程实验报告-对称密码算法DES

这篇实验报告详细介绍了如何使用DES算法对数据进行加密和解密,以理解其工作原理。实验在Windows或Linux环境下进行,涉及密钥生成、加密和解密函数。DES_key结构体用于存储子密钥,加密和解密过程分别由des_ecb_encrypt和des_ecb_decrypt函数完成。实验提供了小代码和大代码两种运行模式,以平衡速度和存储空间。
摘要由CSDN通过智能技术生成

广东工业大学网络工程实验报告-对称密码算法DES

一.实验目的

通过用DES算法对实际的数据进行加密和解密来深刻了解DES的运行原理。

二.实验软件环境

运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境。

三.实验内容

1.算法分析

根据所提供的程序分析DES算法的实现过程。DES程序包括一个头文件和一个实现DES算法的C文件。头文件里主要是一些宏定义和函数声明,其中还包括保证可移植性的一些定义。DES程序通过宏定义可选择小代码模式(#define small code)或者选择大代码模式。在大代码模式下,程序定义了多个表,从而使DES算法中的很多运算都可以通过查表实现,速度较快,但要求有较多的存储空间;在小代码模式运行时,可以不查表,从而节省了存储空间,但是速度较慢。读者可以根据自己的需求来选择不同的运行模式。

加密解密时主要用到下面5个函数。

(l)int des_setup(const unsigned char *key,int keylen,int num_rounds,des_key *skey)

函数名称:密钥生成函数。

参数说明:

key是一个指针,指向用户输入的初始密钥。

keylen是输入密钥的长度,以字节为单位。

num_rounds是加密轮数,当输入0时,使用算法默认的轮数。

skey是一个指向结构体变量的指针,变量里面存储加密和解密时每轮使用的子密钥。

当密钥生成时,返回值为CRYPT_OK(0),结果保留在Skey指向的结构体。

des_key的定义如下:

typedef struct des_key{

ulong32 ek[32], dk[32];

}des_key

结构体里的ek存储加密时用的子密钥,dk存储解密时用的子密钥。

结构体中用2个32位的整数来存储一轮的48位密钥,每一个32位整数被分成4个8位,每个8位的第6位存储密钥。如果把48位密钥分成8组,则这8组按存储的顺序从高到低分别为1、3、5、7、2、4、6、8。这样做是为了加密时可以把扩展和查表运算结合起来。

(2)void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, des_key *key)

函数名称:加密函数。

参数说明;

pt是指向待加密的明文数组的指针。

ct是指向存储加密结果的指针。

key是调用密钥生成函数后存储每一轮子密钥的结构体变量。

加密成功时,返回CRYPT_OK。

(3)void des_ecb_decrypt(const unsigned char *ct,unsigned char *pt,des_key *key)

函数名称:解密函数。

参数说明:

ct是指向待解密的密文数组的指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值