1、参考代码

openssl evp 对称加密(AES_ecb,ccb) - cocoajin - 博客园

//加密
int kk_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,unsigned char *iv, unsigned char *ciphertext)
{EVP_CIPHER_CTX *ctx;int len;int ciphertext_len;ctx = EVP_CIPHER_CTX_new();EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len);ciphertext_len = len;EVP_EncryptFinal_ex(ctx, ciphertext + len, &len);ciphertext_len += len;EVP_CIPHER_CTX_free(ctx);return ciphertext_len;
}//解密
int kk_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key,unsigned char *iv, unsigned char *plaintext)
{EVP_CIPHER_CTX *ctx;int len;int plaintext_len;ctx = EVP_CIPHER_CTX_new();EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len);plaintext_len = len;EVP_DecryptFinal_ex(ctx, plaintext + len, &len);plaintext_len += len;EVP_CIPHER_CTX_free(ctx);return plaintext_len;
}
char *key = "0011223344556677";
char *iv = "0102030405060708";
BYTE ciper[32] = {0};CString strSrc;
GetDlgItemText(IDC_EDIT_Src, strSrc);CString strUtf8 = Encoder::ANSItoUTF8(strSrc);
int ciperLen =  kk_encrypt((BYTE *)(LPCTSTR)strUtf8, strUtf8.GetLength(), (BYTE*)key, (BYTE*)iv, ciper);

2、VS环境搭建

在VS中使用OpenSSL库 - 潇潇O - 博客园

3、填充设置

AES 的 EVP_CIPHER_CTX_set_padding 的padding设置_hddong97的博客-CSDN博客_evp_cipher_ctx

函数全称:

int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);

可以设置在加密数据时对不够长的数据进行填充的方式,pad可以设置为以下几个

//in file openssl/evp.h
#define EVP_PADDING_PKCS7       1
#define EVP_PADDING_ISO7816_4   2
#define EVP_PADDING_ANSI923     3
#define EVP_PADDING_ISO10126    4
#define EVP_PADDING_ZERO        5

使用openssl实现AES CBC 128 pcks7加密相关推荐

  1. javascript ←AES.CBC→ go 相互加密解密

    文章目录 加密 go javascript 解密 go javascript 发现没有完整的 js 和 go 的CBC模式相互加密解密,记录一下 代码来自网络,进行一次整理 加密 go func Ae ...

  2. C语言利用openSSL库AES模块加密

    概述 在密码学里面一共有3中分类: 1.对称加密/解密 对称加密比较常见的有DES/AES.加密方和解密方都持有相同的密钥.对称的意思就是加密和解密都是用相同的密钥. 2.非对称加密/解密 常见的加密 ...

  3. linux下面C 利用openssl的AES库加密,解密

    OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是全部支持或者是部分支持. 返回值:"aes(full)" ...

  4. php aes 128位加密,php实现AES 128位加密的相关操作技巧分享

    php实现AES 128位加密的相关操作技巧是什么?这篇文章主要介绍了PHP实现的AES 128位加密算法,结合实例形式分析了AES 128位加密的相关概念.原理及php实现AES 128位加密的相关 ...

  5. java PKCS7Padding 加密Cannot find any provider supporting AES/CBC/PKCS7Padding 解决办法

    在java中用aes256进行加密,但是发现java里面不能使用PKCS7Padding,而java中自带的是PKCS5Padding填充,那解决办法是,通过BouncyCastle组件来让java里 ...

  6. openssl的AES加密(base64编码)

    openssl的AES加密(base64编码) [ base64编码/解码 ] AES加密后为乱码,使用base64编码后显示正常 /********************************* ...

  7. AES CBC 加密解密(偏移量)

    参考文章:AES加密解密(ECB模式) 工具:在线AES加密解密 使用固定的key package com.eshore.cloud.utils;import android.text.TextUti ...

  8. AES CBC加密/解密

    简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的D ...

  9. python aes加密 cbc_【转载】python AES CBC模式加密

    今天需要用到AES CBC模式加密,搜索了很久,终于加密成功,记录一下今天的理解. 首先要安装pycrypto库,不知道为什么在windows安装失败,在linux可以正常安装 这里有几点要注意,ke ...

  10. AES cbc加密开源库收集

    1.openssl加密 ​​​​​​OpenSSL中AES加密的用法 - 游蓝海2017 - 博客园<OpenSSL中AES加密的用法> 作者: 游蓝海 原文链接: http://blog ...

最新文章

  1. 为uThreadPool增加线程池等待功能
  2. NLP模型也有“老师”了!装上这个开源库,1毫秒纠正语法错误
  3. MySQL replace into 的坑以及insert相关操作
  4. 3、 AUTO_INCREMENT:主键自增长
  5. mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询
  6. LeetCode 598. 范围求和 II
  7. 【大数据】最新大数据学习路线(完整详细版,含整套教程)
  8. Java中的浮点数四舍五入到小数点后2位的一些实用方法
  9. 一目了然,看民生银行 IT 运维故障管理可视化案例
  10. Tabulator PDF下载中文字体设置
  11. 英语六级高频词汇速记 + 2018-6-2听力 Day02
  12. 清华EMBA课程系列思考之二 -- 清华探究及信息战略与管理
  13. wordpress博客设置赞赏和内容会员可见以及跨境电商独立站
  14. ch341a编程器写操作超时失败
  15. 【测试】软件测试之黑盒、白盒、灰盒测试
  16. 「DR老兵寻访」游戏正规军的“万智牌生态”链改计划
  17. ubuntu禁用笔记本触摸板
  18. Android 刘海屏的适配
  19. 消除疑虑:一切假大空都是纸老虎
  20. Calibre 制作电子书

热门文章

  1. CSS绘制三角形—border法
  2. sqlite3返回码
  3. linux软硬链接 计数,深入理解Linux的软链接和硬链接
  4. 中国航空标准件市场运行动态分析及十四五发展规划研究报告2022年版
  5. 基于分解的MOEA的理解
  6. 腾讯电脑管家怎么阻止软件自动安装
  7. web前端开发工程师面试题大全
  8. theano安装教程 linux,Ubuntu安装Theano+CUDA
  9. Linux的基础操作
  10. scrum敏捷开发流程介绍和心得