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

【密码学复习】第四讲分组密码(三)

AES算法的整体结构

AES算法的轮函数

1)字节代换(SubByte)

2)行移位(ShiftRow)

3)列混合(MixColumn)

4)密钥加(AddRoundKey

1-字节代换(ByteSub)

2-行移位(ShiftRow)

3-列混合(MixColumn)

有限域上的字节运算

4—密钥加(AddRoundKey)

AES的

密钥编排由密钥扩展和轮密钥选取两部分组成,其基本原则如下:

1)轮密钥的总比特数等于轮数加1再乘以分组长度;如128比特的明文经过10轮的加密,则总共需要(10+1)*128=1408比特的密钥.

2)种子密钥被扩展成为扩展密钥;

3)轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb 个字,依次类推.

1)扩展密钥

扩展密钥是以4字节字为元素的一维阵列,表示为W[Nb* (Nr +1)],其中前Nk个字取为种子密钥,以后每个字按递归方式定义.扩展算法根据Nk≤6和Nk >6有所不同。

2) 轮密钥选取

轮密钥i(即第i 个轮密钥)由轮密钥缓冲字W[Nb* i]到W[Nb*(i+1)]给出:

AES 的解密变换AES解密运算是加密运算的逆运算,其中轮函数的逆为:1)ByteSub的逆变换由代换表的逆表做字节代换,也可通过如下两步实现: 首先进行仿射变换的逆变换,再求每一字节在GF(28 )上逆元.

2)行移位运算的逆变换是循环右移,位移量与左移时相同.

3)列混合运算的逆运算是类似的,即每列都用一个特定的多项式d(x)相乘, d(x)满足

(03x3 +01x2 +01x+02)*d(x)=01

由此可得

d(x)=0Bx3 +0Dx2 +09x+0E

4)密钥加运算的逆运算是其自身


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

相关文章:

  • 使用 Box2D 库开发愤怒的小鸟游戏
  • FortiGate配置远程拨号VPN
  • PyQt5 超详细入门级教程上篇
  • Node.js 完全教程:从入门到精通
  • R语言的图形用户界面
  • vif-方差膨胀因子计算
  • 【HTML系列】第一章 · HTML入门
  • Linux:centos内核优化详解
  • java.sql.Date和java.util.Date的区别
  • 多线程代码案例-阻塞队列
  • SpringBoot系列 logback-spring日志配置使用记录以及解决依赖包冲突问题
  • python基础语法(下)
  • Echarts实现图表自适应屏幕分辨率
  • docker安装Redis高可用(一主二从三哨兵)
  • MP4怎么转换成MP3格式?两种方法帮你实现
  • 搭建一个双系统个人服务器
  • 水果新鲜程度检测系统(UI界面+YOLOv5+训练数据集)
  • dfs和bfs能解决的问题
  • 给准备面试网络工程师岗位的应届生一些建议
  • CeresPCL 曲线拟合
  • 【LeetCode刷题-Python】移除元素
  • QT表格控件实例(Table Widget 、Table View)
  • Cookie 和 Session的区别
  • Python接口自动化 ❀ 详解 Cookie-Session登录验证 的工作原理
  • 机器学习:基于KNN对葡萄酒质量进行分类
  • 【SpringAOP】AOP面向切面编程