openssl

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

首先,要安装 openssl:

centos命令:

sudo yum install openssl-devel

ubuntu命令:

sudo apt-get install libssl-dev

openssl对des加密加盐 openssl加密命令_运维

 

openssl对des加密加盐 openssl加密命令_密钥长度_02

 

AES算

编译:

#! /bin/sh
out=exe
rm $out
gcc test.c -o $out -lcrypto
运行:
[hill@Ubunut10 aes]$./make.sh 
 [hill@Ubunut10 aes]$./exe 
 AES_BLOCK_SIZE = 16
 原始数据:
 232340402121214142433132330000000000000000000000000000000000000000000000000000000000000000000000
 set aes key = 0123456789abcde
 加密数据:
 1f84ced9ca24eafed2cf4709b2324578b7a085b9b36333a3a667929584c40c1bb7a085b9b36333a3a667929584c40c1b
 揭密数据:
 232340402121214142433132330000000000000000000000000000000000000000000000000000000000000000000000
 uncode aes = ##@@!!!ABC123
 [hill@Ubunut10 aes]$
  法ECB模式
1、使用函数AES_set_encrypt_key设置加密密钥。
函数原型:
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,AES_KEY *key);
函数作用:
设定加密用的Key;
参数说明:
userKey: 密钥数值;
bits:密钥长度,以bit为单位,如果密钥数字是16个字节,则此参数值应为128;
key: AES_KEY对象指针;
返回值: 0 成功, -1 userkey,key为空, -2: 密钥长度不是128,192,256;
2、使用函数AES_set_decrypt_key设置解密密钥。
函数原型:
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,  AES_KEY *key);
函数作用:
设定解密用的Key;
参数说明:
userKey: 密钥数值;
bits:密钥长度,以bit为单位,如果密钥数字是16个字节,则此参数值应为128;
key: AES_KEY对象指针;
返回值: 0 成功, -1 userkey,key为空, -2: 密钥长度不是128,192,256;
3、使用函数AES_ecb_encrypt对数据进行加解密
函数原型:
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,    const AES_KEY *key, const int enc);
函数说明:
AES加密/解密单个数据块(16个字节),ECB模式
参数说明:
in: 需要加密/解密的数据;
out: 计算后输出的数据;
key:密钥
enc: AES_ENCRYPT 代表加密, AES_DECRYPT代表解密;
AES算法CBC模式
1、使用函数AES_set_encrypt_key设置加密密钥。
函数原型:
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,AES_KEY *key);
函数作用:
设定加密用的Key;
参数说明:
userKey: 密钥数值;
bits:密钥长度,以bit为单位,如果密钥数字是16个字节,则此参数值应为128;
key: AES_KEY对象指针;
返回值: 0 成功, -1 userkey,key为空, -2: 密钥长度不是128,192,256;
2、使用函数AES_set_decrypt_key设置解密密钥。
函数原型:
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,  AES_KEY *key);
函数作用:
设定解密用的Key;
参数说明:
userKey: 密钥数值;
bits:密钥长度,以bit为单位,如果密钥数字是16个字节,则此参数值应为128;
key: AES_KEY对象指针;
返回值: 0 成功, -1 userkey,key为空, -2: 密钥长度不是128,192,256;
3、使用函数AES_cbc_encrypt对数据进行加解密
函数原型:
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,   size_t length, const AES_KEY *key,    unsigned char *ivec, const int enc);
函数作用:
AES加密/解密单个数据块(16个字节),CBC模式
参数说明:
in: 需要加密/解密的数据;
out: 计算后输出的数据;
length: 数据长度(这里不包含初始向量数据长度)
key:密钥
ivec: 初始向量(一般为16字节全0)
enc: AES_ENCRYPT 代表加密, AES_DECRYPT代表解密;