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

aes128算法OFB接口

cpp 复制代码
int openssl_aes128_encrypt_ofb(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_ofb(), 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;
}
cpp 复制代码
int openssl_aes128_decrypt_ofb(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_128_ofb(), 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;
}
相关推荐
Arwen3034 分钟前
解密国密 SSL 证书:SM2、SM3、SM4 算法的协同安全效应
算法·安全·ssl
天安彩8 分钟前
mac下 vscode 运行 c++无法弹出窗口
c++·vscode·macos·clang
程序员编程指南14 分钟前
Qt 网络编程进阶:WebSocket 通信
c语言·网络·c++·qt·websocket
地平线开发者20 分钟前
征程 6|工具链部署实用技巧 6:hbm 解析 API 集锦
算法·自动驾驶
nlp研究牲25 分钟前
latex中既控制列内容位置又控制列宽,使用>{\centering\arraybackslash}p{0.85cm}
服务器·前端·人工智能·算法·latex
小白的代码日记27 分钟前
Java经典笔试题
java·开发语言
前端拿破轮28 分钟前
HomeBrew创始人都写不出来的翻转二叉树到底怎么做?
前端·算法·typescript
恣艺1 小时前
LeetCode 127:单词接龙
算法·leetcode·职场和发展
山烛1 小时前
Python 数据可视化之 Matplotlib 库
开发语言·python·matplotlib·数据可视化
地平线开发者1 小时前
开发者说|RoboTransfer:几何一致视频世界模型,突破机器人操作泛化边界
算法·自动驾驶