怎么调用openssl的加密算法接口

发布网友 发布时间:2022-04-25 05:42

我来回答

1个回答

热心网友 时间:2023-10-31 01:40

提供个加密函数代码:

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

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com