AES算法实例

AES算法实例

AES是常用的对称加密算法,采用相同秘钥对明文进行加解密,他的速度比RSA算法要快很多,一般在数据加解密和文件加解密过程中使用,而RSA则更多用于密钥传输,常见密钥长度为128、192,256位。
AES加密是一种分组算法,若明文超过128位,则讲其分成多个128位的块再进行加密,密钥生成时会讲秘钥扩展成128位(以128位为例)

加密过程

在密钥长度为128位时,要进行10轮循环运算,其中9轮为subBytes->ShiftRows->mixColumns->addRoundKey,最后一轮为subBytes->ShiftRows->addRoundKey,过程见下图
AES加密过程

subBytes(字节代换)

将明文与S盒(S盒图片来自ReadingLover)进行字节代换
S盒
通过一一代换得到代换后的值,
S盒代换

ShiftRows(行移位)

第一行不变第二行向左移动一位,第三行向左移动两位,第4行移动三位
行移位

mixColumns(列混合)

将上一步得到的结果的每一列列乘MC矩阵(伽罗瓦矩阵)得到新的结果
计算方法为

x乘01:就是x本身
x乘02:把x转化为二进制左移一位,如果会溢出(原先x最高位为1),加(异或)1b

比如ad*02,将ad转化为二进制为10101101,左移一位为01011010,因为溢出,所以要计算01011010 ⊕00011011得到结果为01000001
比如66*02,将66转化为二进制为01100110,左移一位为11001100,得到结果即为11001100

x乘03:x * 03 = (x * 02)+ x,用前两个方法计算
矩阵乘的计算方法为行乘列相加以第一列为例,02×ad+03×e6+01×5d+01×fb=d6,剩下的15个结果按这种方式计算出来

第一列计算结果
第二列计算结果
第三列计算结果
第四列计算结果
最终得到
结果

addRoundKey(密钥轮加)

用轮密钥与上一步结果进行简单的亦或运算
假设轮密钥为
这里写图片描述
轮加1
轮加2
轮加3
轮加4
最终得到结果
这里写图片描述
整个计算过程为:
计算过程
以上过程就是一次循环运算,将结果再进行8次这样的循环(共9次),最后一次循环不用mixColumns,这样AES加密的过程就基本完成了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值