赞
踩
DES算法的介绍和实现(上)作者:西安 吴真
下载本文配套源代码(DES算法文件加密工具)
一.DES算法介绍
二.算法实现
笔者用c语言编写了的基于DES算法的核心加密解密程序并针对不同的加密解密需求封装了6个接口函数. 2. 1 算法实现接口函数的介绍2.1.1 int des(char *data, char *key,int readlen)参数:1.存放待加密明文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.待加密明文的长度(8字节的倍数)功能: 生成加密密钥,把待加密的明文数据分割成64位的块,逐块完成16次迭代加密,密文存放在data所指向的内存中.2.1.2 int Ddes(char *data, char *key,int readlen)参数:1.存放待解密文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.待解密文的长度( 8字节的倍数)功能: 生成解密密钥,把待解密文分割成64位的块,逐块完成16次迭代解密,解密后的明文存放在data所指向的内存中.2.1.3 int des3(char *data, char *key, int n ,int readlen)参数:1.存放待加密明文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定进行多少层加密4.待加密明文的长度(8字节的倍数)功能: 生成加密密钥,把待加密的明文分割成64位的块,把第i-1层加密后的密文作为第i层加密的明文输入,根据用户指定的加密层数进行n层加密,最终生成的密文存放在data所指向的内存中.说明:用户仅仅输入一条密钥,所有的加密密钥都是由这条密钥生成.2.1.4 int Ddes3(char *data, char*key, int n ,int readlen)参数:1.存放待解密文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定进行多少层解密4.待解密文的长度(8字节的倍数)功能: 生成解密密钥,把待解密文分割成64位的块,把第i-1层解密后的"明文"作为第i层解密的密文输入,根据用户指定的解密层数进行n层解密,最终生成的明文存放在data所指向的内存中.说明:用户仅仅输入一条密钥,所有的解密密钥都是由这条密钥生成.2.1.5 int desN(char*data,char**key,int n_key,int readlen)参数:1.存放待加密明文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定了多少条密钥4.待加密明文的长度(8字节的倍数)功能: 生成加密密钥,把待加密的明文分割成64位的块,把第i-1层加密后的密文作为第i层加密的明文输入,根据用户指定的加密层数进行n层加密,最终生成的密文存放在data所指向的内存中.说明:这里用户通过输入的密钥条数决定加密的层数,每轮16次迭代加密所使用的加密密钥是由用户自定的对应密钥生成.2.1.6 int DdesN(char*data,char**key,intn_key,int readlen)参数:1.存放待解密文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定了多少条密钥4.待解密文的长度(8字节的倍数)功能: 生成解密密钥,把待解密文分割成64位的块,把第i-1层解密后的”明文”作为第i层解密的密文输入,根据用户指定的解密层数进行n层解密,最终生成的明文存放在data所指向的内存中.说明:这里用户通过输入的密钥条数决定解密的层数,每轮16次迭代加密所使用的解密密钥是由用户自定的对应密钥生成. 源代码说明:这是一个有关DES算法实现文件加密工具的代码,我把算法实现的代码封装在了一个DLL中.工程中已经把环境设置好了,无论选择Debug版本还是Release版本只需直接编译就行了.使用时把.exe文件和.dll文件拷贝到同一个目录中即可DES算法的介绍和实现(下)作者信息: 地址:西安沣惠南路8号西安大唐电信数据通信部(邮编 710075) 电话:029-8379381 E-Mail:hitwz@163.com