如何调用openssl 的加解密算法 进行base64 aes-128

 我来答
dolphinMr817

推荐于2016-12-03 · 知道合伙人影视综艺行家
dolphinMr817
知道合伙人影视综艺行家
采纳数:35267 获赞数:317689
影视爱好者

向TA提问 私信TA
展开全部
提供个加密函数代码:

  #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 密文长度

好了,这个函数刚写的,验证了一下,是没有问题的
解密与这个比较类似
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式