明文分组长度: \(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 输入矩阵 = 输出矩阵\)

固定矩阵为:

\[\begin{bmatrix}
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算法流程的更多相关文章

  1. AES算法,DES算法,RSA算法JAVA实现

    1     AES算法 1.1    算法描述 1.1.1      设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计 ...

  2. 加密算法之AES算法(转)

    转载http://www.mamicode.com/info-detail-514466.html 0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组 ...

  3. 分组密码(五)AES算法② — 密码学复习(八)

    在上一篇简单复习了AES的历史时间节点.产生背景.与DES的对比.算法框图(粗略)以及一些数学基础,如果不记得的话点击这里回顾.下面将介绍AES算法的细节. 下面给出AES算法的流程,图片来源:密码算 ...

  4. AES算法简介

    AES算法简介 一. AES的结构 1.总体结构 明文分组的长度为128位即16字节,密钥长度可以为16,24或者32字节(128,192,256位).根据密钥的长度,算法被称为AES-128,AES ...

  5. 使用python进行加密解密AES算法

    使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...

  6. C#与Java互通AES算法加密解密

    /// <summary>AES加密</summary> /// <param name="text">明文</param> /// ...

  7. 双目深度估计传统算法流程及OpenCV的编译注意事项

    起因: 1. 双目立体视觉中双目深度估计是非常重要且基础的部分,而传统的立体视觉的算法基本上都在opencv中有相对优秀的实现.同时考虑了性能和效率.因此,学习使用opencv接口是非常重要的. 2. ...

  8. 深度学习(一)——CNN算法流程

    深度学习(一)——CNN(卷积神经网络)算法流程 参考:http://dataunion.org/11692.html 0 引言 20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感 ...

  9. ORACLE 字段AES算法加密、解密

    ORACLE 字段AES算法加密.解密(解决中文乱码问题)2014年02月12日 17:13:37 华智互联 阅读数:97971.加解密函数入口 CREATE OR REPLACE FUNCTION ...

  10. Imu_tk算法流程及数据采集要求和标定程序参数设置

    Imu_tk算法流程 由于VIO中,普遍使用的是精度较低的imu,所以其需要一个较为准确的内参数和noise的估计.Noise大家通常使用Allan方差进行估计可以得到较为可信的结果,这里不赘述了.内 ...

随机推荐

  1. vscode python配置pip源

    更换到国内清华园 C盘-User-用户名-新建"pip"文件夹-新建"pip.ini"文件 pip.ini 文件中内容: [global]index-url = ...

  2. Windows 10 ~ Jenkins 安装

    首先: jenkins是由java写的,所以在使用之前请安装好JDK(最好安装JDK1.8) 下载jenkins.war包并放到一个自己创建的目录D:\jenkins下:https://mirrors ...

  3. jquery.min.js:2 Uncaught SyntaxError: Unexpected identifier

    错误描述:样式没加载出错,还没发起action请求,action有断点,后端无报错. 错误原因:找了好久,知道是url请求路径错误,搞了几次不对.重新对比url发现是路径拼接错误.注意单引号和双引号. ...

  4. lightgbm与贷款违约预测项目

    lightgbm histogram算法 将连续的浮点值离散成k个离散值,构造宽度为k的histogram leaf-wise生长策略 每次在所有叶子中找到分裂增益最大的一个叶子,一般也是数据量最大的 ...

  5. vscode的下载,安装以及中文配置

    VScode是开发Go应用的基础编辑器,是Microsoft(微软的产品),可以运行在Windows.Linux.Mac Os X上使用,默认提供Go语言语法高亮,安装Go语言插件后,就可以智能提示, ...

  6. antd EditableProTable 组件的简单用法

    首先,antd EditableProTable 组件是在 table组件的基础上又封装了一层,可以实现行更新,删除,增加.只需动动手指,简单配置一下即可. 先下载 EditableProTable ...

  7. jupyter nbconvert --to FORMAT xxx

    $ jupyter nbconvert --to FORMAT notebook.ipynb This will convert the Jupyter notebook file notebook. ...

  8. 在css 中使用calc并且含有变量

    bottom:~"calc(.9rem + constant(safe-area-inset-bottom))";   bottom:~"calc(.9rem + env ...

  9. 后端返回字符流,前端处理进行excel文件导出操作

    针对于这种的文件导出,最关键的是响应类型的设置,也就是responseType的设置(responseType:"arraybuffer"或者responseType:" ...

  10. C语言初级阶段4——数组3——字符数组

    C语言初级阶段4--数组3--字符数组 字符数组的定义:储存字符类型数据的集合 1.注意:如果用字符串给字符数组初始化,那么不需要{},但是要有"". 2.%s :用来输出字符串的 ...