openssl下aes128算法CFB模式加解密运算实例

打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

aes128算法CBC接口

加密接口

  1. int openssl_aes128_encrypt_cfb(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
  2. {
  3.     EVP_CIPHER_CTX* ctx = NULL;
  4.     ctx = EVP_CIPHER_CTX_new();
  5.     printf("%s %d\n", __func__, __LINE__);
  6.     EVP_EncryptInit_ex(ctx, EVP_aes_128_cfb(), NULL, key, iv);
  7.     EVP_CIPHER_CTX_set_padding(ctx, 0);
  8.     if (!EVP_EncryptUpdate(ctx, out_buf, out_len, in_buf, in_len))
  9.     {
  10.         EVP_CIPHER_CTX_free(ctx);
  11.         return -1;
  12.     }
  13.     int tmplen = 0;
  14.     if (!EVP_EncryptFinal_ex(ctx, out_buf + *out_len, &tmplen))
  15.     {
  16.         EVP_CIPHER_CTX_free(ctx);
  17.         return -2;
  18.     }
  19.     *out_len += tmplen;
  20.     EVP_CIPHER_CTX_free(ctx);
  21.     return 0;
  22. }
复制代码
解密接口

  1. int openssl_aes192_decrypt_cfb(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
  2. {
  3.     int ret = 0;
  4.     EVP_CIPHER_CTX* ctx = NULL;
  5.     ctx = EVP_CIPHER_CTX_new();
  6.     printf("%s %d\n", __func__, __LINE__);
  7.     EVP_DecryptInit_ex(ctx, EVP_aes_192_cfb(), NULL, key, iv);
  8.     if (!EVP_DecryptUpdate(ctx, out_buf, out_len, in_buf, in_len))
  9.     {
  10.         EVP_CIPHER_CTX_free(ctx);
  11.         return -1;
  12.     }
  13.     int tmplen = 0;
  14.     ret = EVP_DecryptFinal_ex(ctx, out_buf + *out_len, &tmplen);
  15.     if (ret)
  16.     {
  17.     //        RSP_TRACE("%s EVP_DecryptFinal_ex error ret=%d\n", __func__, ret);
  18.         EVP_CIPHER_CTX_free(ctx);
  19.         return -2;
  20.     }
  21.     *out_len += tmplen;
  22.     EVP_CIPHER_CTX_free(ctx);
  23.     return 0;
  24. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表