明文分组长度: \(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. Centos使用nohup实现后台运行程序

    nohup和&的区别& : 指在后台运行 nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断 ...

  2. AIO基本编写

    一. public class Server { //线程池 private ExecutorService executorService; //线程组 private AsynchronousCh ...

  3. 2022-07-10 第一小组 张明旭 前端CSS学习记录

    今天是正式学习的第二天,昨天那个作业项目真的难,自己做一会就得问这问那,还有大神带一带(?_?)... 今天学习的内容是前端中的CSS,男上加男..... 知识点: Css层叠式表(网页美化) 1.定 ...

  4. shell相关基础面试题

    用sed修改test.txt的23行test为tset: sed –i '23s/test/tset/g' test.txt 查看/web.log第25行第三列的内容. sed –n '25p' /w ...

  5. maven项目资源导出问题

    maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案: <!--在build中配置resources,来防止我们资源导出失败的问题--> ...

  6. CeiT:Incorporating Convolution Designs into Visual Transformers

    CeiT:Incorporating Convolution Designs into Visual Transformers 将CNN提取low-level特征,强化局部特征提取的能力,与Trans ...

  7. Python 错误:ModuleNotFoundError: No module named 'conf'

    问题描述: 编译器无法使用cmd命令来执行py文件,结果可能报ModuleNotFoundError的错误. 比如在cmd任务栏执行:python E:\myProgram\Python\spider ...

  8. Verilog中端口的连接规则

    摘自于(15条消息) Verilog中端口应该设置为wire形还是reg形_CLL_caicai的博客-CSDN博客, 以及(15条消息) Verilog端口连接规则_「已注销」的博客-CSDN博客_ ...

  9. 高并发解决方案之 redis原子操作(适用于秒杀场景)

    秒杀活动: 秒杀场景一般会在电商网站或(APP/小程序)举行一些活动或者节假日在12306网站上抢票时遇到.对于一些稀缺或者特价商品,一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大 ...

  10. LEETCODE 数组嵌套

    题目:数组嵌套 索引从0开始长度为N的数组A,包含0到N - 1的所有整数.找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以 ...