aes-128 cbc模式算法源码分析

使用的结构体

31 struct aes_key_st {32 # ifdef AES_LONG33     unsigned long rd_key[4 * (AES_MAXNR + 1)];34 # else35     unsigned int rd_key[4 * (AES_MAXNR + 1)];36 # endif37     int rounds;38 };   39 typedef struct aes_key_st AES_KEY;

函数分析

int AES_set_encrypt_key(const unsigned char *userKey, const int bits,                                                                                   634                         AES_KEY *key)加密生成key,主要使用userKey来填充key的值int AES_set_decrypt_key(const unsigned char *userKey, const int bits,46                         AES_KEY *key);
解密生成key,第一步首先userKey来填充key的值,然后对key进行加工注意:加密和解密生成key的过程使用userKey必须保持一致,且userKey数组必须大于bits位
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,56                      size_t length, const AES_KEY *key,57                      unsigned char *ivec, const int enc);传进iv会变覆盖掉,这一点一定注意
算法思想:1 把明文划分128bits大小块 (block)2 iv 和 block进行异或3 使用key对 (iv ^ block) 处理,生成密文4 移位,直到全部处理完。
密文长度:明文长度%128bits == 0 ,明文长度 == 密文长度明文长度%128bits != 0 ,明文长度 + 16 == 密文长度

AES128-CBC相关推荐

  1. 简单记录Java的AES128加密和解密

    前言   1998年NIST开始AES第一轮分析.测试和征集,共产生了15个候选算法.1999年3月完成了第二轮AES2的分析.测试.2000年10月2日美国政府正式宣布选中比利时密码学家Joan D ...

  2. 对称加密----AES和DES加密、解密

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...

  3. 差分能量分析介绍(一)

    一.背景 由于涉及多个系统层的攻击难以预测和建模,因此安全漏洞通常是由组件和层之间的意外交互造成的.如果算法设计者.软件开发人员和硬件工程师不合作,不了解彼此的工作,在系统的一个层中进行的安全性假设可 ...

  4. openSSL命令、PKI、CA、SSL证书原理

    相关学习资料 http://baike.baidu.com/view/7615.htm?fr=aladdin http://www.ibm.com/developerworks/cn/security ...

  5. 构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥

    ▼扫描下图二维码了解音视频技术大会更多信息▼ 翻译.编辑:Alex 技术审校:刘姗.周亚桥 本文来自OTTVerse,作者为Krishna Rao Vijayanagar. Easy-Tech#016 ...

  6. 数据传输优化篇之:scp 或 rsync+ssh 参数优化

    目前很多应用场景中,出于各种考虑,使用了 scp  或者 rsync+ssh 的方式进行数据传输.但是一直都使用缺省选项,很少进行优化.我在内部数据同步时,也长期使用了缺省选项,后来碰到几百G到几个T ...

  7. 你应该知道的数仓安全

    摘要:防止数据泄露可以有两种技术路径.一是权限管理,采用最小化授权原则对使用数据的用户和应用程序授权.另一种是数据加密,包括使用SQL函数加密和透明加密. 本文分享自华为云社区<[安全无小事]你 ...

  8. aesmiyao php_php写的AES加密解密类分享

    /** * php AES加解密类 * 如果要与java共用,则密钥长度应该为16位长度 * 因为java只支持128位加密,所以php也用128位加密,可以与java互转. * 同时AES的标准也是 ...

  9. 使用 openssl 生成证书

    一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现. 官网:https://www.opens ...

  10. openssl命令查看证书有效期_使用 openssl 生成证书

    一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现. 官网:https://www.opens ...

最新文章

  1. DDM实践:数据库秒级平滑扩容方案
  2. 我的FizzBuzz和一点感想
  3. HDOJ 1098 Ignatius's puzzle
  4. docker kali安装mysql_Linux环境使用Docker安装MySql
  5. VB中字符串匹配的多种方式
  6. fastjson php,Fastjson 对象或数组转JSON
  7. centos安装python3_CentOS安装Python3-阿里云开发者社区
  8. 挑战程序设计竞赛(第2版)
  9. Vue 安装@vue/cli报错npmERR gyp ERR
  10. 基于5g的交通运输_一种基于5G的智慧交通基础服务平台
  11. 学大数据需要具备什么基础和知识点?
  12. 7-4 工作分配问题分数 20作者 陈晓梅单位 广东外语外贸大学
  13. 【评分卡开发】信用评分模型构建流程
  14. smartforms设备类型CNSAPWIN不支持页格式ZXXX
  15. matlab在电力电子的应用,MATLAB在电力电子技术中的应用
  16. 没有独立显卡没有NVIDIA 如何安装pytorch
  17. P3580 [POI2014]ZAL-Freight(单调队列dp)
  18. 国外ATG网络进展及余割平方波束ATG地面天线设计
  19. 硅谷领军行动:两大诺贝尔得主同时空降,黑石摩根解密晋级风控,斯坦福专家点睛区块链全图谱...
  20. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)

热门文章

  1. Photoshop脚本入门(二)- JavaScript脚本参考
  2. pandas学习笔记------set_index()
  3. 各端口抓肉鸡的几种方法
  4. 前端中的scrollHeight 、scrollTop、clientHeight等意思
  5. 2012年奥巴马胜选演说
  6. Android(安卓)订餐APP(Sqlite数据库,完整的增删改查)
  7. 计算机网络技术知识点大全,最新计算机网络技术与应用知识点大全
  8. JVM:方法调用之动态类型语言支持。
  9. 曙光服务器制作raid文档,曙光服务器制作RAID.docx
  10. HTA程序:VBS/JS脚本GUI