当前位置: 首页 > article >正文

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

aes128算法CBC接口

加密接口


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)
{
    EVP_CIPHER_CTX* ctx = NULL;
    ctx = EVP_CIPHER_CTX_new();
    printf("%s %d\n", __func__, __LINE__);

    EVP_EncryptInit_ex(ctx, EVP_aes_128_cfb(), 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;
}

解密接口


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)
{
    int ret = 0;
    EVP_CIPHER_CTX* ctx = NULL;
    ctx = EVP_CIPHER_CTX_new();
    printf("%s %d\n", __func__, __LINE__);

    EVP_DecryptInit_ex(ctx, EVP_aes_192_cfb(), NULL, key, iv);

    if (!EVP_DecryptUpdate(ctx, out_buf, out_len, in_buf, in_len))
    {
        EVP_CIPHER_CTX_free(ctx);
        return -1;
    }

    int tmplen = 0;
    ret = EVP_DecryptFinal_ex(ctx, out_buf + *out_len, &tmplen);
    if (ret)
    {
    //        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;
}


http://www.kler.cn/a/568357.html

相关文章:

  • 【C】初阶数据结构8 -- 链式二叉树
  • javaEE初阶————多线程初阶(5)
  • ​Java 实体类中的常见问题:@Data 注解与 is 前缀字段的陷阱​
  • Linux find 命令
  • 高频 SQL 50 题(基础版)_2356. 每位教师所教授的科目种类的数量
  • 《Java加密与解密的艺术》第3章java加密利器
  • 17、什么是智能指针,C++有哪几种智能指针【高频】
  • 考研408数据结构线性表核心知识点与易错点详解(附真题示例与避坑指南)
  • 游戏引擎学习第127天
  • Java数据结构第十六期:走进二叉树的奇妙世界(五)
  • 【QT线程】子线程阻塞主线程的一次网络api请求案例
  • 自然语言处理算法工程师的技术图谱和学习路径
  • 代码随想录算法训练day66---图论系列10《Bellman_ford 队列优化算法负权回路单源有限最短路》
  • 26、IO流(只是小入门)
  • IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程
  • Ollama 的庐山真面目
  • 【树莓派学习】树莓派3B+的安装和环境配置
  • GIT工具学习【1】:基本操作
  • 数据库Redis数据库
  • 【中等】707.设计链表