AES算法流程
明文分组长度: \(128bit\)
密钥长度: \(128bit\)
迭代轮数: \(10轮\)
加密和解密均在\(4*4\)的矩阵上进行,每个格子\(1\)个字节,共\(16\)个字节\(128bit\)
注意AES算法序列映射到矩阵上是列优先的,所以读取时都是一列一列地读,这不同于DES的行优先

轮密钥加
两个矩阵\(A, B\)进行异或,\(A_{ij} \oplus B_{ij} = C_{ij}\)
字节代替
对于原矩阵的每一个格子的数值\((1btye-8bit)\),前\(4bit\)指明行数,后\(4bit\)指明列数,到S盒(不同于DES中的8个S盒)中找到对应位置的数值作为输出
行移位
\(1\)到\(4\)行依次循环左移 \(0byte\),\(1byte\),\(2byte\),\(3byte\)
注意是循环左移,每移动一位都相当于将最左侧的一个格子放到最右侧
列混合
\(固定矩阵 \times 输入矩阵 = 输出矩阵\)
固定矩阵为:
02 & 03 & 01 & 01 \\
01 & 02 & 03 & 01 \\
01 & 01 & 02 & 03 \\
03 & 01 & 01 & 02
\end{bmatrix}
\]
计算方法
矩阵乘法的规则没有变化
这里的数值计算实际上为多项式计算,下面分为加法和乘法分别讨论
加法
多项式表示: \((x^6 + x^4 + x^2 + x + 1) + (x^7 + x + 1) = x^7 + x^6 + x^4 + x^2\)
二进制表示: \(01010111 \oplus 10000011 = 11010100\)
十六进制表示: \(0x57 \oplus 0x83 = 0xd4\)
因为是模2加法,所以两个十六进制加法只需先将十六进制转化为二进制再进行异或操作
乘法
首先定义了一个运算-x乘法
假设存在一表达式\(b(x)=b_7x^7 + b_6x^6 + b_5x^5 + b_4x^4 + b_3x^3 + b_2x^2 + b_1x + b_0\),x乘法就是\(x*b(x)\)
- \(b_7 = 0\)时,\(x*b(x)\)运算后二进制的结果是\(b(x)\)对应的二进制左移一位,右侧补0
- \(b_7 = 1\)时,\(x*b(x)\)运算后二进制的结果是\(b(x)\)对应的二进制左移一位,右侧补0,再与\(1B(00011011)\)进行异或
也就是说两个十六进制进行乘法运算,我们首先需要转化为二进制。其次我们必须想办法将乘法运算转化为x乘法(这样做只是会大幅度简化计算,否则需要使用两个多项式进行乘法运算),例如\(57H * 13H\),我们可以将\(13H\)转化为\(01H + 02H + 10H\),\(*01H\)就是乘1,\(*10H\)对应多项式的\(x^4\),只需要乘\(4\)次x即可,而乘x的运算结果就是我们上面提到的那两种情况,判断\(b_7\)是否为0即可。这样做即可免除使用两个多项式进行计算。
AES算法流程的更多相关文章
- AES算法,DES算法,RSA算法JAVA实现
1 AES算法 1.1 算法描述 1.1.1 设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计 ...
- 加密算法之AES算法(转)
转载http://www.mamicode.com/info-detail-514466.html 0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组 ...
- 分组密码(五)AES算法② — 密码学复习(八)
在上一篇简单复习了AES的历史时间节点.产生背景.与DES的对比.算法框图(粗略)以及一些数学基础,如果不记得的话点击这里回顾.下面将介绍AES算法的细节. 下面给出AES算法的流程,图片来源:密码算 ...
- AES算法简介
AES算法简介 一. AES的结构 1.总体结构 明文分组的长度为128位即16字节,密钥长度可以为16,24或者32字节(128,192,256位).根据密钥的长度,算法被称为AES-128,AES ...
- 使用python进行加密解密AES算法
使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...
- C#与Java互通AES算法加密解密
/// <summary>AES加密</summary> /// <param name="text">明文</param> /// ...
- 双目深度估计传统算法流程及OpenCV的编译注意事项
起因: 1. 双目立体视觉中双目深度估计是非常重要且基础的部分,而传统的立体视觉的算法基本上都在opencv中有相对优秀的实现.同时考虑了性能和效率.因此,学习使用opencv接口是非常重要的. 2. ...
- 深度学习(一)——CNN算法流程
深度学习(一)——CNN(卷积神经网络)算法流程 参考:http://dataunion.org/11692.html 0 引言 20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感 ...
- ORACLE 字段AES算法加密、解密
ORACLE 字段AES算法加密.解密(解决中文乱码问题)2014年02月12日 17:13:37 华智互联 阅读数:97971.加解密函数入口 CREATE OR REPLACE FUNCTION ...
- Imu_tk算法流程及数据采集要求和标定程序参数设置
Imu_tk算法流程 由于VIO中,普遍使用的是精度较低的imu,所以其需要一个较为准确的内参数和noise的估计.Noise大家通常使用Allan方差进行估计可以得到较为可信的结果,这里不赘述了.内 ...
随机推荐
- setAttribute动态添加
btnDel.setAttribute('type', 'button'); //type="button" btnDel.setAttribute('value', '删除'); ...
- 【python】绘图,颜色,线型
颜色 最好用的:在网站上找到对应使用十六进制RGB/RGBA字符串表示颜色 可以看颜色及其对应色号名称:https://xkcd.com/color/rgb/ 参考:matplotlib指定绘图颜色的 ...
- 解决LayUI中的 laydate 点击一闪而过问题
加一个:trigger: 'click' <input name="apbegin" id="apbegin" class="layui-inp ...
- mac中chrome常用快捷键
1.标签页和窗口快捷键 ⌘-N 打开新窗口. ⌘-T ...
- modesim : mosel not define
这个星期仿真sdram时,添加的sdram 模型文件在modesim中总是找不到,在qq群里提问和私聊别人都没有得到解决方法.于是自己摸索了好多天.终于得到了解决. 可以看到modesim里面work ...
- ORA-00972: identifier is too long异常处理
环境:由于数据库更换,做数据同步,提示 too long 问题,导致一直无法同步完数据. 经排查 oracle 历史数据库版本: Oracle Database 12c Standard Editio ...
- LeetCode 刷题感想之动态规划
在 LeetCode/剑指Offer 上刷了500题左右了,应该写一篇文章总结一下自己的感想.因为我自己是测试,所以从测试角度来写感受吧. 先说动态规划. 什么是动态规划?是经典算法思想之一,是自底向 ...
- 07 HBase操作
1.理解HBase表模型及四维坐标:行键.列族.列限定符和时间戳. 2.启动HDFS,启动HBase,进入HBaseShell命令行. 3.列出HBase中所有的表信息list 4.创建表create ...
- Redis工具类 单机+集群
package com.irdstudio.basic.framework.redis.redisutil; import org.springframework.dao.DataAccessExce ...
- easy-rsa 不同版本克隆
1.克隆easy-rsa 并切换到2.0版本的分支 yum install -y git git clone https://github.com/OpenVPN/easy-rsa.git cd ea ...