OpenSSL库中des加密函数库的使用
时间:2010-05-26 来源:harrypolt2008
OpenSSL库中DES加密函数库的使用
DES是一种可以实现数据加密和解密的对称算法,在OpenSSL中有DES算法的具体实现,由于是是开源代码,你不需要任何借口就可以使用它们,当然最好你也遵守和它一样的开源协议。在很多的Linux系统中已经安装了openssl函数库,如果你的Linux系统没有安装OpenSSL函数库的话,你需要安装它们,这样你才可以使用此函数库。当然,如果你需要查看它们的使用方法的话,你还需要安装此函数的开发文档,这样你就可以利用man手册来方便的了解此函数库了。下面是本人利用此DES算法API实现的一个简单的数据加密和解密测试程序,希望能对学习如何使用此DES函数库的朋友们有所帮助,错误之处,请不吝赐教。后面附加了一个简单的makefile文件。
/*main文件*/
#include <stdio.h>
#include <openssl/des.h> /*DES算法头文件*/
#define DEBUG_PRINT /*初始化需要加密的数据*/
void init_input(const_DES_cblock input)
{
input[0] = 0;
input[1] = 1;
input[2] = 2;
input[3] = 3;
input[4] = 4;
input[5] = 5;
input[6] = 6;
input[7] = 7;
}
int main(void)
{
int ret = 0;
int i = 0;
DES_cblock key; /*密钥*/
DES_key_schedule key_schedule; /*将密钥转化保存的数据结构,用于加密*/
DES_key_schedule key_schedule1; /*解密时使用*/
const_DES_cblock input; /*需要加密的数据*/
DES_cblock output; /*加密后的数据*/ init_input(input); /*初始化数据*/
memset(output, 0, 8); /*清零*/
ret = DES_random_key(&key); /*获得随机密钥*/
ret = DES_set_key_checked(&key, &key_schedule); /*转化密钥*/ DES_ecb_encrypt(&input, &output, &key_schedule, 1); /*加密数据*/
memset(input, 0, 8); /*清零*/
ret = DES_set_key_checked(&key, &key_schedule1); /*转换密钥*/
DES_ecb_encrypt(&output, &input, &key_schedule1, 0); /*解密*/ return 0;
} /*makefile*/ CC=gcc
CFLAGS=-lssl all: main main: main.c
$(CC) -o $@ $^ $(CFLAGS) clean:
rm -rf main
#include <openssl/des.h> /*DES算法头文件*/
#define DEBUG_PRINT /*初始化需要加密的数据*/
void init_input(const_DES_cblock input)
{
input[0] = 0;
input[1] = 1;
input[2] = 2;
input[3] = 3;
input[4] = 4;
input[5] = 5;
input[6] = 6;
input[7] = 7;
}
int main(void)
{
int ret = 0;
int i = 0;
DES_cblock key; /*密钥*/
DES_key_schedule key_schedule; /*将密钥转化保存的数据结构,用于加密*/
DES_key_schedule key_schedule1; /*解密时使用*/
const_DES_cblock input; /*需要加密的数据*/
DES_cblock output; /*加密后的数据*/ init_input(input); /*初始化数据*/
memset(output, 0, 8); /*清零*/
ret = DES_random_key(&key); /*获得随机密钥*/
ret = DES_set_key_checked(&key, &key_schedule); /*转化密钥*/ DES_ecb_encrypt(&input, &output, &key_schedule, 1); /*加密数据*/
memset(input, 0, 8); /*清零*/
ret = DES_set_key_checked(&key, &key_schedule1); /*转换密钥*/
DES_ecb_encrypt(&output, &input, &key_schedule1, 0); /*解密*/ return 0;
} /*makefile*/ CC=gcc
CFLAGS=-lssl all: main main: main.c
$(CC) -o $@ $^ $(CFLAGS) clean:
rm -rf main
相关阅读 更多 +