AES算法介绍
更新时间:2024-06-03 07:49:01 阅读量: 综合文库 文档下载
AES算法介绍
1. AES算法简介
AES算法是高级加密标准算法的简称,其英文名称为Advanced Encryption Standard。该加密标准的出现是因为随着对称密码的发展,以前使用的DES(Data Encryption Standard数据加密标准)算法由于密钥长度较小(56位),已经不适应当今数据加密安全性的要求,因此后来由Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。AES算法所能支持的密钥长度可以为128,192,256位(也即16,24,32个字节)。加之算法本身复杂的加密过程使得该算法成为数据加密领域的主流。
2. AES算法的基本概念
(1) 有限域(GF)
由于AES算法中的所有运算都是在有限域当中进行的,所以在理解和实现该算法之前先得打好有限域这一基石才行。通常的数学运算都是在实数域中进行,而AES算法则是在有限域中进行,我们可以将有限域看成是有确定边界范围的正整数集合,在该集合当中,任意两个元素之间的运算结果都仍然落在该集合当中,也即满足运算封闭性。 那么如何才能保证这样的“有限性”(也即封闭性)呢?
GF(2w)被称之为伽罗华域,是有限域的典型代表。随着w(=4,8,16,?)的取值不同所形成的有限域范围也不同。AES算法中引入了GF域当中对数学运算的基本定义:将两数的加减法定义为两者的异或运算;将两数的乘法定义为多项式间的相乘并求余运算,其中被用于求余运算的除数被称为不可约多项式(或者称为求余多项式),它是固定的一个多项式:m(x) =x?x?x?x?1(数值为十六进制的11B,这里是假定w=8时的情形)。对于某个有限域而言,可能存在不唯一的不可约多项式,选择合适的多项式是某种算法考虑的主要因素之一。
有了上述对数学运算的基本定义,就可以实现运算的有限性了。对于有限域具体的运算过程和实例演示可参照有关资料。这里不再赘述。
843(2) 状态矩阵和密钥矩阵
状态矩阵是指将要被加密的若干数据所形成的矩阵,我们暂且用state_matrix来表示;
而密钥矩阵则是指密钥数据所形成的矩阵,我们暂且用cipher_matrix来表示。随着输入数据个数的不同,这两个矩阵的维数可以为4?4,4?6或者4?8;例如如果输入的被加密数据为24个字符(此处假定是以字符为数据单位进行加密,当然也可以是以一个整数为单位等进行加密),输入的密钥数据为16个字符(假设与上同),那么可以形成一个4?6维的state_matrix矩阵和一个4?4维的cipher_matrix矩阵。可见形成的矩阵的行数是固定的,都为4。因为矩阵的形成是以每4个数据为一列依次构成,所以随着数据的增加只会增加其列数而不会影响其行数。并且我们用Nb表示被加密数据矩阵(state_matrix矩阵)的列数,用Nk表示密钥数据矩阵(cipher_matrix矩阵)的列数。那么有了上述两个矩阵,我们就可以进行AES的加密过程了。
(3) 扩展密钥
扩展密钥是从密钥矩阵变换而来,之所以称之为“扩展”是因为在AES的加密过程
中,要对数据进行Nr+1轮加密,每次加密的密钥都不一样,我们将着Nr+1轮加密过
程中用到的所有的密钥的集合叫做扩展密钥。那么如何去确定这个轮数Nr呢?Nr的取值是根据Nb和Nk的值确定的,AES算法中给出了它们之间如下的对照表:
Nr Nb=4 10 12 14 Nb=6 12 12 14 Nb=8 14 14 14
Nk=4 Nk=6 Nk=8
例如:如果Nb=6,Nk=4那么我们的加密过程应该进行Nr+1=13次,那么也就有13个扩展密钥。由于这些密钥要和state_matirx矩阵做异或运算,所以每个扩展密钥必须转化为一个和state_matirx矩阵同维数的加密矩阵才可以进行每个元素一对一的运算。由Nb和Nr的值,我们可以计算出扩展密钥的整体“长度”。如下公式可以给出:
Nb*(Nr+1);例如Nb=6,Nr=12则“长度”为78;
这78个数字每6个为一个扩展密钥(因为Nb=6,所以要这样分组)。那么这78个数字是怎么形成的呢?AES算法中将形成扩展密钥的过程定义为:KeyExpansion()。该过程以cipher_matrix矩阵的值,每一列的4个byte组成一个int数,那么对于Nk=4的cipher_matrix而言必然可以构成4个int数,KeyExpansion()过程(过程的具体实现参照相关文献)就是以这4个整型数为基础,通过它的扩展方式将这4个数字扩展成了78个数字。这78个数字,每6个组成一个密钥(再将int化为char型恰好构成一个4?6维的扩展密钥矩阵),总共进行13次加密过程。为了存储这78个数字,算法中开辟一个W[i]数组。显然该数组的维数为W[Nb*(Nr+1)]。
(4) AES加密过程
1# 前面的Nr轮(0 ~ Nr-1)被称之为Round()过程: Round()
{ ByteSub(); //字节变换过程,该过程参照S_box实现 ShiftRow(); //行交换过程,该过程参照既定的交换规则实现 MixColumn(); //列变换过程,该过程参照C(x)矩阵实现 AddRoundKey(); //扩展密钥加密过程,该过程参照扩展密钥实现
}
2# 最后一轮加密过程(第Nr轮)被称为FinalRound()过程: FinalRound() { ByteSub(); ShiftRow(); AddRoundkey();
}
在上述过程中,ByteSub(), ShiftRow(), MixColumn()三个过程的变换是固定的模式,具体的实现可以参照相关文献。它们的调用次数分别为:Nr+1次,Nr+1次,Nr次。而AddRoundkey()过程显然是Nr+1次,它是与扩展密钥相关的。前Nr轮加密中用去了Nr个扩展密钥,第Nr轮加密中用去最后一个扩展密钥,从而实现Nr+1轮加密过程。至此AES算法结束。
正在阅读:
AES算法介绍06-03
读书指导校本教材 - 图文04-17
Empower3软件安装图例08-23
以学情分析促进小学作文教学11-12
2017年中国含氯消毒剂现状分析及市场前景预测(目录)05-03
生物质炭气联产综合利用设备09-24
参观息烽集中营的心得体会03-27
奇妙的“情绪”教案04-27
房土两税操作快速指南08-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 算法
- 介绍
- AES
- 数据分析及展示软件平台选型 - 图文
- 中南大学近代物理实验报告-原子力显微镜实验报告
- 联想集团财务管理模式分析
- 威斯敏斯特大教理问答
- 101-152故障应急
- 2012年北京初三郊区化学二模试卷汇总
- 重庆市教育委员会关于批准重庆市高等学校“十二五”市级重点学科
- 党建工作制度汇编(国企党委)
- 幼儿游戏理论 半期考试卷
- 2018-《今日说法》观后感800字范文参考-优秀word范文(2页)
- 2012东财经《济法概论》
- 食品标准与法规
- 南开18春学期《当代中国经济(尔雅)》在线作业答案
- sdh mstp第一部分
- 2017-2022年中国汽车转向系统市场投资前景分析研究报告(目录)
- 无穷级数的敛散性及其应用
- 公司治理第一次作业
- 电大国家开放大学学习指南试题答案
- 自己整理的软件工程简答题
- 马鞍山市促进现代服务业发展若干政策(暂行)(征求意见稿)2ef3a9f9