A8站源码交易平台
#include
#define MSG_LEN 16
#define DECRY 0
typedef enum{
AES_EBC
void my_evp_init()
//假如不经过初始化就调用了加密或摘要相关的EVP接口,则会回来过错。
OpenSSL_add_all_algorithms();
// OpenSSL_add_all_digest();
return;
//对称算法
*@ciphername 算法称号,经过此称号找到EVP_CIPHER结构
*@aKey 对称算法秘钥
*
static int OpenSSL_Cipher(int ciphername, int dir,
const unsigned char *in, int inlen,
{
const EVP_CIPHER *cipher = NULL;
/* 初始化加密调用的上下文 */
/* 依据称号(如des-cbc,或rc4)获取CIPHER目标,OpenSSL支撑的算法称号能够用openssl enc -h指令列出 */
cipher = EVP_get_cipherbyname(ciphername);
fprintf( stderr, "OpenSSL_Cipher: Cipher for %s is NULL
", ciphername );
goto err;
#endif
printf("AES_CBC is %d
",AES_CBC);
{
cipher = EVP_aes_128_cbc();
default:
return -9;
/**
* 假如运用Engine,此刻会调用其完成的EVP_CIPHER->init回调函数
if (!EVP_CipherInit_ex(&ctx, cipher, NULL, aKey, iVec, dir)) {
rv = -2;
}
* 对数据进行加/解密运算(假如运用Engine,此刻会调用其完成的EVP_CIPHER->do_cipher回调函数)
*/
fprintf( stderr, "OpenSSL_Cipher: EVP_CipherInit failed
");
goto err;
/**
* 留意:假如运用Engine,此刻会触发其完成的EVP_CIPHER->do_cipher,而不是EVP_CIPHER->cleanup
*/
fprintf( stderr, "OpenSSL_Cipher: EVP_CipherInit failed
");
goto err;
*poutlen += tmplen;
/* 开释上下文(假如运用Engine,此刻会调用其完成的EVP_CIPHER->cleanup回调函数) */
return rv;
void my_evp_free()
//与OpenSSl_add_all_algorithms正好相反
return;
int main(int argc,char *argv[])
EVP_ALGORITHM chname;
printf("chname = %d
",chname);
printf("chname = %d
",chname);
int i = 0;
int source_len = 0;
unsigned char detct[4*MSG_LEN] = {0};
my_evp_init();
FILE * fre = fopen(argv[1],"rb");
FILE * fwr = fopen(argv[2],"wb");
unsigned char key[16] = {0};
for(i = 0;i<16;i++)
{
fre_len = fread(source,sizeof(char),2*MSG_LEN,fre);
printf("detct_len = %d
",detct_len);
memset(source,0,sizeof(source));
printf("source_len = %d
",source_len);
fclose(fre);
#endif
}
A8站源码交易平台