前面对AES的使用进行了研究,这一节,介绍Blowfish,Blowfish也是一种对称加密算法,采用分组加密的模式。
C/C++采用openssl/crypt库调用,过程比较简单,直接看下面代码:
#include <stdio.h>
#include "evp.h"
#define BREAK_ERROR(msg){\
fprintf(stderr,"error break [%s]\n",msg);\
break;\
}
#define CIPHER_INFO(e){\
fprintf(stderr,"key_len:[%d]",EVP_CIPHER_CTX_key_length(e));\
fprintf(stderr,"iv_len :[%d]",EVP_CIPHER_CTX_iv_length(e));\
fprintf(stderr,"mode:[%d]",EVP_CIPHER_CTX_mode(e));\
fprintf(stderr,"flag:[%d]\n",EVP_CIPHER_CTX_flags(e));\
}
int test_ecb_blowfish(char *buf1,char *buf2,char *buf3,int *len1,int *len2,int *len3,unsigned char *key){
int ret = 0,tmplen;
*len2 = *len3 = tmplen = 0;
/* encrypt */
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx);
EVP_EncryptInit_ex(&ctx,EVP_bf_