您的位置:首页 > 娱乐 > 明星 > 建筑招聘网官网_平面设计赚钱平台_东莞网络营销网络推广系统_外贸业务推广

建筑招聘网官网_平面设计赚钱平台_东莞网络营销网络推广系统_外贸业务推广

2025/3/7 7:33:51 来源:https://blog.csdn.net/funtasty/article/details/145948972  浏览:    关键词:建筑招聘网官网_平面设计赚钱平台_东莞网络营销网络推广系统_外贸业务推广
建筑招聘网官网_平面设计赚钱平台_东莞网络营销网络推广系统_外贸业务推广

aes128算法CBC接口

加密接口

说明

  • EVP_EncryptInit_ex初始化函数,输入算法类型、key、iv
  • EVP_EncryptUpdate,加密函数,可以迭代加密,加密时注意输入位置和长度获取,每次迭代加密时,数据偏移要加上上一次运算获取的长度
  • EVP_EncryptFinal_ex,加密结束,注意该函数如输出长度,则要添加到输出的数据长度中
  • 整体说加密没有特殊情况。按接口调用即可。不同于解密。

int openssl_aes128_encrypt_cbc(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
{EVP_CIPHER_CTX* ctx = NULL;ctx = EVP_CIPHER_CTX_new();printf("%s %d\n", __func__, __LINE__);EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);EVP_CIPHER_CTX_set_padding(ctx, 0);if (!EVP_EncryptUpdate(ctx, out_buf, out_len, in_buf, in_len)){EVP_CIPHER_CTX_free(ctx);return -1;}int tmplen = 0;if (!EVP_EncryptFinal_ex(ctx, out_buf + *out_len, &tmplen)){EVP_CIPHER_CTX_free(ctx);return -2;}*out_len += tmplen;EVP_CIPHER_CTX_free(ctx);return 0 ;
}

解密接口

说明

解密接口不同于加密接口,当数据位16B整数倍时,解密需要再次调用update函数而不是finish函数,代码如下:


int openssl_aes128_decrypt_cbc(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
{EVP_CIPHER_CTX* ctx = NULL;ctx = EVP_CIPHER_CTX_new();int ret = 0;int tmplen = 0;printf("%s %d\n", __func__, __LINE__);EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);if (!EVP_DecryptUpdate(ctx, out_buf, &tmplen, in_buf, in_len)){EVP_CIPHER_CTX_free(ctx);return -1;}*out_len = tmplen;if (in_len > tmplen) {if (!EVP_DecryptUpdate(ctx, out_buf+tmplen, &tmplen, in_buf+tmplen, in_len-tmplen)){//        RSP_TRACE("%s EVP_DecryptUpdate error \n", __func__);EVP_CIPHER_CTX_free(ctx);return -1;}printf("%s %d tmplen=%d\n", __func__, __LINE__,tmplen);*out_len += tmplen;}if (in_len %16!=0){ret = EVP_DecryptFinal_ex(ctx, out_buf+tmplen, &tmplen);fprintf(stderr, "err:\n");if (ret != 0){//        RSP_TRACE("%s EVP_DecryptFinal_ex error ret=%d\n", __func__, ret);EVP_CIPHER_CTX_free(ctx);return -2;}*out_len += tmplen;}EVP_CIPHER_CTX_free(ctx);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com