一文了解AES 加密算法

AES加密,在27安全访问以及一些文件加密是比较常见的加密方法。

AES(高级加密标准)是一种对称加密算法,其加密过程是基于 分组加密(block cipher)的,每次加密的单位是固定大小的 128 位数据块。AES 有三种不同的密钥长度:128 位、192 位和 256 位,每种密钥长度对应不同的加密轮数。具体的加密过程分为多个步骤,以下是基于 AES-128(即使用 128 位密钥)加密的详细流程。对于 AES-192 和 AES-256,加密流程类似,只是在轮数和密钥扩展上有所不同。

AES 加密流程

  1. 初始化:
  • 明文数据:将明文数据分成 128 位(16 字节) 的数据块。如果明文长度不足 128 位,需要进行填充(如 PKCS7 填充)。
  • 密钥:AES 的密钥长度为 128 位(16 字节),用于生成一系列轮密钥。
  1. 密钥扩展(Key Expansion):
  • 在加密过程中,密钥会被扩展成一组密钥,这些密钥会在每一轮加密中使用。对于 AES-128,扩展后的密钥长度为 44 个 32 位字(即总共 176 字节)。扩展过程通过密钥调度算法(key schedule)生成每一轮的密钥。
  1. 初始轮(Initial Round):
  • AddRoundKey:初始数据块和第一轮的密钥进行异或操作。初始轮密钥从扩展密钥中提取。
  1. 主要轮(Main Rounds): 对于 AES-128,需要进行 10 轮加密操作。每一轮操作包括以下步骤:
  • SubBytes(字节替代):使用 S-Box(代替字节查找表)对数据块中的每一个字节进行替代。S-Box 是一个 16x16 的矩阵,将每个字节替换为一个新的字节。
  • ShiftRows(行移位):数据块中的 4 行被循环位移。第一行不变,第二行向左移 1 个字节,第三行向左移 2 个字节,第四行向左移 3 个字节。这增强了数据的扩散性。
  • MixColumns(列混合):每列的 4 个字节通过一个固定的数学操作进行混合,这进一步增强了数据的扩散性。具体的计算使用有限域 GF(2^8) 来进行。
  • AddRoundKey:将当前数据块与相应轮的密钥进行异或操作,得到加密后的数据。
  1. 最后一轮(Final Round): 最后一轮的操作与主要轮类似,但 没有 MixColumns 步骤,剩余的步骤如下:
  • SubBytes(字节替代):同样使用 S-Box 进行字节替代。
  • ShiftRows(行移位):同样进行行位移操作。
  • AddRoundKey:使用最后一轮密钥对数据进行异或操作,得到最终的密文。

每个步骤的详细描述

  1. AddRoundKey(轮密钥异或): - 将数据块与轮密钥进行异或操作。这是加密中的关键步骤,每一轮的密钥都会对数据进行更新。
  2. SubBytes(字节替代): - 用 S-Box(替代字节查找表)对明文中的每个字节进行替代,提供非线性变换,增强加密的复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小昭debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值