AES 加密与解密
- 撤销(Ctrl+Z)
- 重做(Ctrl+Y)
- 清空
- H标题(Ctrl+1~6)
- 一级标题
- 二级标题
- 三级标题
- 四级标题
- 五级标题
- 六级标题
- 粗体(Ctrl+B)
- 斜体(Ctrl+I)
- 删除线
- 插入引用(Ctrl+Q)
- 无序列表(Ctrl+U)
- 有序列表(Ctrl+O)
- 表格
- 插入分割线
- 插入链接(Ctrl+L)
- 插入图片
- 添加图片链接
- 插入代码块
- 保存(Ctrl+S)
- 开启预览
- 开启目录导航
- 关闭同步滚动
- 全屏(按ESC还原)
# 工具简介 本工具是一款 AES 在线加密解密工具,支持 GCM、CBC、CTR、CFB、OFB、ECB 等加密模式。用户可以选择文件或文本进行 AES 加密与解密操作。文本加密解密支持多种填充方式,包括:PKCS7Padding、PKCS5Padding、NoPadding、ISO 10126、ANSI X923、ISO/IEC 7816-4 和 Zero Padding。同时,支持 Base64 和 Hex 两种输出格式,密钥大小可选择 128、192 或 256 比特。 # AES 简介 高级加密标准(Advanced Encryption Standard,AES)是一种用于保护电子数据的对称密钥加密算法。它由美国国家标准与技术研究院(NIST)于 2001 年采用,取代了原先的 DES(Data Encryption Standard)算法,成为新的加密标准。 ## AES 的定义 AES 是一种对称分组密码算法,采用相同的密钥进行加密和解密。它基于比利时密码学家 Joan Daemen 和 Vincent Rijmen 提出的 Rijndael 算法,被选定为新的加密标准。 ## AES 的历史背景与发展 在 20 世纪末,随着计算能力的提高,DES 的56位密钥长度已不足以抵御暴力破解。为此,NIST 于 1997 年开始寻找新的加密标准,经过多轮评选,最终在 2000 年选择了 Rijndael 算法,并在 2001 年正式发布 AES。 ## AES 的重要性与应用领域 AES 由于其高效性和安全性,广泛应用于各种领域,包括金融、政府、军事和个人数据保护。它已成为保护数据安全的核心算法,被广泛嵌入到硬件和软件中。 # AES 原理 {{{width="80%" height="80%"}}} ## 对称加密算法概述 对称加密算法使用相同的密钥进行加密和解密。发送方和接收方必须共享这个密钥,这要求密钥的安全分发。 ### 分组密码与分组大小 AES 是一种分组密码算法,将明文分成固定大小的块(128位),然后对每个块进行加密。分组密码在处理大量数据时具有高效率。 ### 密钥长度 AES 支持三种密钥长度:128位、192位和256位。密钥长度越长,安全性越高,但处理速度可能略有降低。 ## AES 算法细节 AES 的加密过程包括初始轮密钥加和多个加密轮,每一轮都包含特定的操作。解密过程是加密过程的逆过程。 ### 轮函数与轮数 AES 的加密轮数取决于密钥长度: - 128位密钥:10轮 - 192位密钥:12轮 - 256位密钥:14轮 每一轮包括以下四个步骤: **字节代换(SubBytes)** 使用一个固定的 S 盒(Substitution box)对状态矩阵中的每个字节进行非线性替换,提高算法的混淆性。 **行移位(ShiftRows)** 对状态矩阵的行进行循环左移,移位的位数取决于行号,增强了字节之间的扩散性。 **列混淆(MixColumns)** 对每一列进行多项式乘法运算,进一步混合列内的数据,增强密文的复杂性。 **轮密钥加(AddRoundKey)** 将当前状态与轮密钥进行按位异或(XOR)操作,引入密钥信息。 ### 密钥扩展与密钥调度 密钥扩展将初始密钥生成一系列轮密钥,用于每一轮的加密操作。这个过程涉及到密钥的循环位移、S 盒代换和常量异或。 # 加密模式介绍 由于分组密码只能加密固定大小的数据块,需要工作模式来处理任意长度的数据。常见的 AES 工作模式有: **电子密码本模式(ECB)** 直接对每个分组进行加密,但相同的明文块会产生相同的密文块,容易被分析,不推荐使用。 **密码分组链接模式(CBC)** 每个明文块在加密前与前一个密文块进行异或,第一个块则与一个初始化向量(IV)异或。提高了安全性,但加密过程不可并行化。 **密文反馈模式(CFB)** 将之前的密文块作为下一个块的输入,实现了部分的错误恢复能力。 **输出反馈模式(OFB)** 类似于 CFB,但使用加密器的输出作为下一个块的输入,具有同步流密码的特性。 **计数器模式(CTR)** 使用一个计数器生成密钥流,与明文块进行异或操作。支持并行处理,效率高。 **Galois/Counter Mode(GCM)** GCM 是一种认证加密模式,结合了计数器模式(CTR)的高效性和 Galois 字段的认证功能,提供了数据的机密性和完整性保障。 **GCM 的特点** **高效性**:支持并行计算,能够充分利用多核处理器的性能,提高加密和解密的速度。 **认证功能**:在提供数据加密的同时,还生成认证标签(Authentication Tag),用于验证数据的完整性和真实性。 **灵活性**:支持任意长度的附加认证数据(AAD),这些数据不会被加密,但会被纳入认证范围。 ### 加密模式的推荐 - 优先选择具备认证功能的模式:如 GCM,可以同时满足机密性和完整性需求。 - 避免使用已知存在安全隐患的模式:如 ECB 模式。 - 正确管理初始化向量(IV)和计数器:确保 IV 的唯一性和不可预测性,防止重放和密钥流重复。 # 填充模式 在使用 AES 等分组密码算法时,明文数据的长度可能不是分组长度(128 位,即 16 字节)的整数倍。为了使明文能够被正确分组,需要对其进行填充。常见的填充模式有: **PKCS#5 和 PKCS#7 Padding** **PKCS#5 Padding**:主要用于 8 字节分组的密码算法。 **PKCS#7 Padding**:适用于任意分组长度的密码算法,包括 AES 的 16 字节分组。 **填充方法**:在明文末尾添加若干个字节,填充的字节数等于需要填充的长度,每个字节的值都是填充的字节数。 **示例**:如果需要填充 5 个字节,则每个填充字节的值为 0x05。 **对于 AES 来说**,由于块大小为 16 字节,**因此 PKCS#5 和 PKCS#7 填充方式在实际应用中是相同的**。在 AES 加密中,可以将两者视为等价的填充方案。 **Zero Padding(零填充)** 在明文末尾添加 0x00 字节,直到达到分组长度。但需要注意,解密时可能无法区分填充的零和原始数据中的零。 **ANSI X923 Padding** 在明文末尾添加若干个 0x00,最后一个字节表示填充的字节数。 **ISO 10126 Padding** 在明文末尾添加随机数据,最后一个字节表示填充的字节数。这增加了填充的不可预测性。 **ISO/IEC 7816-4 Padding** 在明文末尾添加一个 0x80 字节,后面跟随必要数量的 0x00,直到达到分组长度。 **No Padding(无填充)** 在某些工作模式(如流模式或特定的填充方案)下,可以不进行填充。但需要确保明文长度是分组长度的整数倍,否则可能导致错误。 ::: tip 参考资料 [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) :::
工具简介
本工具是一款 AES 在线加密解密工具,支持 GCM、CBC、CTR、CFB、OFB、ECB 等加密模式。用户可以选择文件或文本进行 AES 加密与解密操作。文本加密解密支持多种填充方式,包括:PKCS7Padding、PKCS5Padding、NoPadding、ISO 10126、ANSI X923、ISO/IEC 7816-4 和 Zero Padding。同时,支持 Base64 和 Hex 两种输出格式,密钥大小可选择 128、192 或 256 比特。
AES 简介
高级加密标准(Advanced Encryption Standard,AES)是一种用于保护电子数据的对称密钥加密算法。它由美国国家标准与技术研究院(NIST)于 2001 年采用,取代了原先的 DES(Data Encryption Standard)算法,成为新的加密标准。
AES 的定义
AES 是一种对称分组密码算法,采用相同的密钥进行加密和解密。它基于比利时密码学家 Joan Daemen 和 Vincent Rijmen 提出的 Rijndael 算法,被选定为新的加密标准。
AES 的历史背景与发展
在 20 世纪末,随着计算能力的提高,DES 的56位密钥长度已不足以抵御暴力破解。为此,NIST 于 1997 年开始寻找新的加密标准,经过多轮评选,最终在 2000 年选择了 Rijndael 算法,并在 2001 年正式发布 AES。
AES 的重要性与应用领域
AES 由于其高效性和安全性,广泛应用于各种领域,包括金融、政府、军事和个人数据保护。它已成为保护数据安全的核心算法,被广泛嵌入到硬件和软件中。
AES 原理

对称加密算法概述
对称加密算法使用相同的密钥进行加密和解密。发送方和接收方必须共享这个密钥,这要求密钥的安全分发。
分组密码与分组大小
AES 是一种分组密码算法,将明文分成固定大小的块(128位),然后对每个块进行加密。分组密码在处理大量数据时具有高效率。
密钥长度
AES 支持三种密钥长度:128位、192位和256位。密钥长度越长,安全性越高,但处理速度可能略有降低。
AES 算法细节
AES 的加密过程包括初始轮密钥加和多个加密轮,每一轮都包含特定的操作。解密过程是加密过程的逆过程。
轮函数与轮数
AES 的加密轮数取决于密钥长度:
- 128位密钥:10轮
- 192位密钥:12轮
- 256位密钥:14轮
每一轮包括以下四个步骤:
字节代换(SubBytes)
使用一个固定的 S 盒(Substitution box)对状态矩阵中的每个字节进行非线性替换,提高算法的混淆性。
行移位(ShiftRows)
对状态矩阵的行进行循环左移,移位的位数取决于行号,增强了字节之间的扩散性。
列混淆(MixColumns)
对每一列进行多项式乘法运算,进一步混合列内的数据,增强密文的复杂性。
轮密钥加(AddRoundKey)
将当前状态与轮密钥进行按位异或(XOR)操作,引入密钥信息。
密钥扩展与密钥调度
密钥扩展将初始密钥生成一系列轮密钥,用于每一轮的加密操作。这个过程涉及到密钥的循环位移、S 盒代换和常量异或。
加密模式介绍
由于分组密码只能加密固定大小的数据块,需要工作模式来处理任意长度的数据。常见的 AES 工作模式有:
电子密码本模式(ECB)
直接对每个分组进行加密,但相同的明文块会产生相同的密文块,容易被分析,不推荐使用。
密码分组链接模式(CBC)
每个明文块在加密前与前一个密文块进行异或,第一个块则与一个初始化向量(IV)异或。提高了安全性,但加密过程不可并行化。
密文反馈模式(CFB)
将之前的密文块作为下一个块的输入,实现了部分的错误恢复能力。
输出反馈模式(OFB)
类似于 CFB,但使用加密器的输出作为下一个块的输入,具有同步流密码的特性。
计数器模式(CTR)
使用一个计数器生成密钥流,与明文块进行异或操作。支持并行处理,效率高。
Galois/Counter Mode(GCM)
GCM 是一种认证加密模式,结合了计数器模式(CTR)的高效性和 Galois 字段的认证功能,提供了数据的机密性和完整性保障。
GCM 的特点
高效性:支持并行计算,能够充分利用多核处理器的性能,提高加密和解密的速度。
认证功能:在提供数据加密的同时,还生成认证标签(Authentication Tag),用于验证数据的完整性和真实性。
灵活性:支持任意长度的附加认证数据(AAD),这些数据不会被加密,但会被纳入认证范围。
加密模式的推荐
- 优先选择具备认证功能的模式:如 GCM,可以同时满足机密性和完整性需求。
- 避免使用已知存在安全隐患的模式:如 ECB 模式。
- 正确管理初始化向量(IV)和计数器:确保 IV 的唯一性和不可预测性,防止重放和密钥流重复。
填充模式
在使用 AES 等分组密码算法时,明文数据的长度可能不是分组长度(128 位,即 16 字节)的整数倍。为了使明文能够被正确分组,需要对其进行填充。常见的填充模式有:
PKCS#5 和 PKCS#7 Padding
PKCS#5 Padding:主要用于 8 字节分组的密码算法。
PKCS#7 Padding:适用于任意分组长度的密码算法,包括 AES 的 16 字节分组。
填充方法:在明文末尾添加若干个字节,填充的字节数等于需要填充的长度,每个字节的值都是填充的字节数。
示例:如果需要填充 5 个字节,则每个填充字节的值为 0x05。
对于 AES 来说,由于块大小为 16 字节,因此 PKCS#5 和 PKCS#7 填充方式在实际应用中是相同的。在 AES 加密中,可以将两者视为等价的填充方案。
Zero Padding(零填充)
在明文末尾添加 0x00 字节,直到达到分组长度。但需要注意,解密时可能无法区分填充的零和原始数据中的零。
ANSI X923 Padding
在明文末尾添加若干个 0x00,最后一个字节表示填充的字节数。
ISO 10126 Padding
在明文末尾添加随机数据,最后一个字节表示填充的字节数。这增加了填充的不可预测性。
ISO/IEC 7816-4 Padding
在明文末尾添加一个 0x80 字节,后面跟随必要数量的 0x00,直到达到分组长度。
No Padding(无填充)
在某些工作模式(如流模式或特定的填充方案)下,可以不进行填充。但需要确保明文长度是分组长度的整数倍,否则可能导致错误。
常见问题
- 此工具处理的文件会上传到网站服务器吗?
不会。此工具文件 AES 加密与解密是在本地浏览器客户端中处理完成的,不会上传到服务器。
隐私和安全性
本工具不会在网站上存储任何生成的密钥或您输入的密钥。所有操作均通过 HTTPS 进行,确保密钥在传输过程中不会被窃取。
发布评论
暂无评论
期待你的评论
发条评论表达你的想法吧