- 密码学教程
- 密码学 - 首页
- 密码学 - 起源
- 密码学 - 历史
- 密码学 - 原理
- 密码学 - 应用
- 密码学 - 优点与缺点
- 密码学 - 现代
- 密码学 - 传统密码
- 密码学 - 加密的需求
- 密码学 - 双重强度加密
- 密码系统
- 密码系统
- 密码系统 - 组件
- 密码系统的攻击
- 密码系统 - 彩虹表攻击
- 密码系统 - 字典攻击
- 密码系统 - 暴力破解攻击
- 密码系统 - 密码分析技术
- 密码学的类型
- 密码系统 - 类型
- 公钥加密
- 现代对称密钥加密
- 密码学哈希函数
- 密钥管理
- 密码系统 - 密钥生成
- 密码系统 - 密钥存储
- 密码系统 - 密钥分发
- 密码系统 - 密钥撤销
- 分组密码
- 密码系统 - 流密码
- 密码学 - 分组密码
- 密码学 - Feistel 分组密码
- 分组密码的工作模式
- 分组密码的工作模式
- 电子密码本 (ECB) 模式
- 密码分组链接 (CBC) 模式
- 密码反馈 (CFB) 模式
- 输出反馈 (OFB) 模式
- 计数器 (CTR) 模式
- 经典密码
- 密码学 - 反向密码
- 密码学 - 凯撒密码
- 密码学 - ROT13 算法
- 密码学 - 换位密码
- 密码学 - 加密换位密码
- 密码学 - 解密换位密码
- 密码学 - 乘法密码
- 密码学 - 仿射密码
- 密码学 - 简单替换密码
- 密码学 - 简单替换密码的加密
- 密码学 - 简单替换密码的解密
- 密码学 - 维吉尼亚密码
- 密码学 - 维吉尼亚密码的实现
- 现代密码
- Base64 编码与解码
- 密码学 - XOR 加密
- 替换技术
- 密码学 - 单字母替换密码
- 密码学 - 单字母替换密码的破解
- 密码学 - 多字母替换密码
- 密码学 - Playfair 密码
- 密码学 - 希尔密码
- 多字母替换密码
- 密码学 - 一次性密码本
- 一次性密码本的实现
- 密码学 - 换位技术
- 密码学 - 栅栏密码
- 密码学 - 列移位换位
- 密码学 -隐写术
- 对称算法
- 密码学 - 数据加密
- 密码学 - 加密算法
- 密码学 - 数据加密标准
- 密码学 - 三重 DES
- 密码学 - 双重 DES
- 高级加密标准
- 密码学 - AES 结构
- 密码学 - AES 变换函数
- 密码学 - 字节替换变换
- 密码学 - 行移位变换
- 密码学 - 列混合变换
- 密码学 - 轮密钥加变换
- 密码学 - AES 密钥扩展算法
- 密码学 - Blowfish 算法
- 密码学 - SHA 算法
- 密码学 - RC4 算法
- 密码学 - Camellia 加密算法
- 密码学 - ChaCha20 加密算法
- 密码学 - CAST5 加密算法
- 密码学 - SEED 加密算法
- 密码学 - SM4 加密算法
- IDEA - 国际数据加密算法
- 公钥(非对称)密码学算法
- 密码学 - RSA 算法
- 密码学 - RSA 加密
- 密码学 - RSA 解密
- 密码学 - 创建 RSA 密钥
- 密码学 - 破解 RSA 密码
- 密码学 - ECDSA 算法
- 密码学 - DSA 算法
- 密码学 - Diffie-Hellman 算法
- 密码学中的数据完整性
- 密码学中的数据完整性
- 消息认证
- 密码学数字签名
- 公钥基础设施
- 哈希
- MD5(消息摘要算法 5)
- SHA-1(安全哈希算法 1)
- SHA-256(安全哈希算法 256 位)
- SHA-512(安全哈希算法 512 位)
- SHA-3(安全哈希算法 3)
- 哈希密码
- Bcrypt 哈希模块
- 现代密码学
- 量子密码学
- 后量子密码学
- 密码学协议
- 密码学 - SSL/TLS 协议
- 密码学 - SSH 协议
- 密码学 - IPsec 协议
- 密码学 - PGP 协议
- 图像与文件加密
- 密码学 - 图像
- 密码学 - 文件
- 隐写术 - 图像
- 文件加密和解密
- 密码学 - 文件加密
- 密码学 - 文件解密
- 物联网中的密码学
- 物联网安全挑战、威胁和攻击
- 物联网安全的加密技术
- 物联网设备的通信协议
- 常用密码学技术
- 自定义构建密码学算法(混合密码学)
- 云密码学
- 量子密码学
- 密码学中的图像隐写术
- DNA 密码学
- 密码学中的一次性密码 (OTP) 算法
- 之间的区别
- 密码学 - MD5 与 SHA1
- 密码学 - RSA 与 DSA
- 密码学 - RSA 与 Diffie-Hellman
- 密码学与密码学
- 密码学 - 密码学与密码分析
- 密码学 - 经典与量子
- 密码学与隐写术
- 密码学与加密
- 密码学与网络安全
- 密码学 - 流密码与分组密码
- 密码学 - AES 与 DES 密码
- 密码学 - 对称与非对称
- 密码学有用资源
- 密码学 - 快速指南
- 密码学 - 讨论
密码学 - AES 结构
AES 由一系列链接操作组成,其中一些操作涉及用特定输出替换输入(替换),另一些操作则涉及重新排列位(置换)。
有趣的是,AES 所有计算都在字节而不是位上进行。因此,AES 将明文块的 128 位视为 16 个字节。这 16 个字节被排列成四列四行,以矩阵形式进行处理。
与 DES 不同,AES 中的轮数是可变的,并且取决于密钥的长度。AES 对 128 位密钥使用 10 轮,对 192 位密钥使用 12 轮,对 256 位密钥使用 14 轮。每一轮都使用不同的 128 位轮密钥,该密钥根据原始 AES 密钥计算得出。
AES 结构示意图如下所示:
密码需要 128 位或 16 字节的明文块大小。密钥长度可以是 16、24 或 32 字节(128、192 或 256 位)。根据密钥长度,算法的名称为 AES-128、AES-192 或 AES-256。
单个 128 位块作为加密和解密过程的输入。在 FIPS PUB 197 中,此块表示为 4 * 4 的字节方阵。在加密或解密的每个步骤中,此块都会被复制到 State 数组中,并更新该数组。在最后阶段之后,输出矩阵包含当前状态的副本。
加密过程
这里,我们仅限于描述 AES 加密的典型轮次。每一轮都包含四个子过程。第一轮过程如下图所示:
密钥扩展
轮密钥使用 Rijndael 的分组密码调度表根据密码密钥计算得出。
预变换
这仅包含一个过程,即 Add_Round_Key。这里,对每个数据字节与轮密钥的一个字节执行 XOR 运算。
字节替换 (SubBytes)
通过查找设计中给出的固定表 (S-box) 来替换 16 个输入字节。结果是四行四列的矩阵。
行移位
矩阵的四行中的每一行都向左移动。任何“掉落”的条目都重新插入到行的右侧。移位如下进行:
- 第一行不移位。
- 第二行向左移动一个(字节)位置。
- 第三行向左移动两个位置。
- 第四行向左移动三个位置。
- 结果是一个新的矩阵,它包含相同的 16 个字节,但彼此之间发生了移位。
列混合
现在使用特殊的数学函数转换四字节的每一列。此函数以一列的四个字节作为输入,并输出四个全新的字节,这些字节替换原始列。结果是另一个新的矩阵,包含 16 个新字节。需要注意的是,在最后一轮中不执行此步骤。
轮密钥加
矩阵的 16 个字节现在被视为 128 位,并与轮密钥的 128 位进行异或。如果这是最后一轮,则输出为密文。否则,将生成的 128 位解释为 16 个字节,然后我们开始另一轮类似的轮次。
解密过程
AES 密文的解密过程类似于加密过程,但顺序相反。每一轮都包含四个以相反顺序进行的过程:
- 轮密钥加
- 列混合
- 行移位
- 字节替换
由于每一轮中的子过程都是相反的,因此与 Feistel 密码不同,加密和解密算法需要单独实现,尽管它们密切相关。