博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openssl c AES/CBC/PKCS5Padding 与java代码对应
阅读量:4683 次
发布时间:2019-06-09

本文共 1269 字,大约阅读时间需要 4 分钟。

1     char encrypt_string[4096] = { 0 }; 2     AES_KEY aes; 3     char key[17] = "quck7295abvdefgh"; 4     char iv[17] = "abcdefgh3762quck"; 5     std::string input_string = "45b00417-f7ca-4f53-bced-c1743d85604"; 6     int nLen = input_string.length(); 7  8     int nBei = nLen / AES_BLOCK_SIZE + 1; 9     int nTotal = nBei * AES_BLOCK_SIZE;10     char *enc_s = (char*)malloc(nTotal);11     int nNumber;12     if (nLen % 16 > 0)13         nNumber = nTotal - nLen;14     else15         nNumber = 16;16     memset(enc_s, nNumber, nTotal);17     memcpy(enc_s, input_string.data(), nLen);18 19     if (AES_set_encrypt_key((unsigned char*)key, 128, &aes) < 0) {20         fprintf(stderr, "Unable to set encryption key in AES\n");21         exit(-1);22     }23     24     AES_cbc_encrypt((unsigned char *)enc_s, (unsigned char*)encrypt_string, nBei * 16, &aes, (unsigned char*)iv, AES_ENCRYPT);25 26 27     std::string enstr = boost::lexical_cast
(encrypt_string);28 std::string base64 = base64_encode(enstr);29 30 std::cout << base64 << std::endl;

KCS5Padding:填充的原则是,如果长度少于16个字节,需要补满16个字节,补(16-len)个(16-len)例如:

huguPozhen这个节符串是9个字节,16-9= 7,补满后如:huguozhen+7个十进制的7

如果字符串长度正好是16字节,则需要再补16个字节的十进制的16。

转载于:https://www.cnblogs.com/dependence/p/4857495.html

你可能感兴趣的文章
uva-11995 - I Can Guess the Data Structure!(栈,优先队列,队列,水题)
查看>>
webpack-dev-server 的服务无法使用的问题
查看>>
day11
查看>>
Collections -- 集合的工具类
查看>>
shell与if相关参数
查看>>
第四百五十三天 how can I 坚持
查看>>
jquery 插件 分析
查看>>
js 中文乱码
查看>>
HDU 4329 Contest 3
查看>>
python 权限系统设计
查看>>
第十六周 项目三-max带来的冲突
查看>>
Linux Centos7 Apache 訪问 You don&#39;t have permission to access / on this server.
查看>>
IIS2008配置URlRewriter
查看>>
pycharm快捷键
查看>>
JavaWeb——使用会话维持状态2
查看>>
LR调用动态链接库DLL
查看>>
DuiLib学习笔记4——布局
查看>>
android sdk安装设置
查看>>
spring配置文件头部配置解析
查看>>
Vim 操作符命令和动作命令
查看>>