原文地址:http://blog.youkuaiyun.com/sunspider107/article/details/7408959
Blowfish是一种对称加密算法,密钥长度16个字节,加密的数据块长度是8个字节,由于加密/解密需要的时间长,一般用于用户密码加盐算法的加密上。
openssl中提供的blowfish函数,与DES,AES算法相同,下面是简要的介绍。
void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
设定Key;
key: Blowfish key对象;
len: 数据长度;
data: 密钥数据;
void BF_encrypt(BF_LONG *data,const BF_KEY *key);
单个数据块的加密;
data: 数据,输入/输出是相同的数据区;
key: blowfish密钥数据;
void BF_decrypt(BF_LONG *data,const BF_KEY *key);
单个数据块解密;
void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,
const BF_KEY *key, int enc);
BlowFish的ECB加密/解密计算;
in: 源数据;
out: 输出数据;
key: 密钥对象;
enc:加密/解密模式, 加密: BF_ENCRYPT, 解密:BF_DECRYPT
const BF_KEY *schedule, unsigned char *ivec, int enc);
BlowFish的CBC加密/解密计算;
in: 源数据;
out: 输出数据;
length: 数据长度;
schedule: 密钥对象;
ivec: 初始化向量;
enc:加密/解密模式, 加密: BF_ENCRYPT, 解密:BF_DECRYPT
const BF_KEY *schedule, unsigned char *ivec, int *num, int enc);
BlowFish的CFB64加密/解密计算;
in: 源数据;
out: 输出数据;
length: 数据长度;
schedule: 密钥对象;
ivec: 初始化向量;
num: 参与计算的block数;
enc:加密/解密模式, 加密: BF_ENCRYPT, 解密:BF_DECRYPT
const BF_KEY *schedule, unsigned char *ivec, int *num);
BlowFish的OFB64加密计算;
in: 源数据;
out: 输出数据;
length: 数据长度;
schedule: 密钥对象;
ivec: 初始化向量;
num: 参与计算的block数;
const char *BF_options(void);
BlowFish的选项;