首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么调用openssl 的加解密算法 进行base64 aes-128-ecb 模式的加解密

2013-11-21 
如何调用openssl 的加解密算法 进行base64 aes-128-ecb 模式的加解密?熟悉的指点一下[解决办法]提供个加密

如何调用openssl 的加解密算法 进行base64 aes-128-ecb 模式的加解密?
熟悉的指点一下



[解决办法]
提供个加密函数代码:


#define MAX_ENCRYPT_LEN 1024
void MyEncrypt(const unsigned char *sMsg, int cbMsg, unsigned char *sEncryptMsg, int &cbEncryptMsg)
{
OpenSSL_add_all_algorithms();
//产生会话密钥
unsigned char SessionKey[16];
RAND_bytes(SessionKey,16);

//加密
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx);
if(EVP_EncryptInit_ex(&ctx,EVP_get_cipherbynid(NID_aes_128_ecb),NULL,SessionKey,NULL))
{
int offseti=0;
int offseto=0;
int offsett=0;
for(;;)
{
if(cbMsg-offseti<=MAX_ENCRYPT_LEN)
{
EVP_EncryptUpdate(&ctx, sEncryptMsg+offseto, &offsett, sMsg+offseti, cbMsg-offseti);
offseto+=offsett;
break;
}
else
{
EVP_EncryptUpdate(&ctx, sEncryptMsg+offseto, &offsett, sMsg+offseti, MAX_SIGN_MSG);
offseti+=MAX_SIGN_MSG;
offseto+=offsett;
}
}
EVP_EncryptFinal_ex(&ctx, sEncryptMsg+offseto, &offsett);
offseto+=offsett;
cbEncryptMsg=offseto;
}
EVP_CIPHER_CTX_cleanup(&ctx);
}


参数解释:
const unsigned char *sMsg  需要解密的明文
int cbMsg 明文长度
unsigned char *sEncryptMsg 输出密文
int &cbEncryptMsg 密文长度

好了,这个函数刚写的,验证了一下,是没有问题的
解密与这个比较类似,你懂的

热点排行