什么是 AES?

AES(高级加密标准)是一种对称分组密码算法,被美国政府采用作为加密机密信息的标准。它使用 128、192 或 256 位的密钥以 128 位的固定大小块加密数据。

快速了解

全称高级加密标准
创建时间2001 年由 NIST 确立(算法由 Daemen 和 Rijmen 设计)
规范文档官方规范

AES 工作原理

AES 于 2001 年由 NIST 在经过五年的选择过程后确立,取代了旧的 DES 标准。该算法最初称为 Rijndael,由比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计。AES 在称为状态的 4x4 字节矩阵上操作,应用多轮替换、置换和混合操作。AES-128 使用 10 轮,AES-192 使用 12 轮,AES-256 使用 14 轮。它广泛用于 SSL/TLS、文件加密、VPN 和安全消息传递。

主要特点

  • 对称加密(加密/解密使用相同密钥)
  • 128 位块大小的分组密码
  • 密钥大小:128、192 或 256 位
  • 在硬件和软件中都很快
  • 没有已知的针对完整 AES 的实际攻击
  • 美国政府批准用于机密数据

常见用途

  1. 文件和磁盘加密
  2. SSL/TLS 安全通信
  3. VPN 隧道
  4. 安全消息应用
  5. 数据库加密

示例

AES 加密模式:

ECB(电子密码本)- 不推荐
CBC(密码块链接)- 需要 IV
CTR(计数器模式)- 可并行化
GCM(伽罗瓦/计数器模式)- 认证加密

AES-256-GCM 示例(Node.js):
const crypto = require('crypto');

function encrypt(text, key) {
  const iv = crypto.randomBytes(12);
  const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
  let encrypted = cipher.update(text, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  const tag = cipher.getAuthTag();
  return { iv, encrypted, tag };
}

密钥大小:
AES-128: 16 字节(128 位)- 10 轮
AES-192: 24 字节(192 位)- 12 轮
AES-256: 32 字节(256 位)- 14 轮

OpenSSL 命令:
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc

QubitTool 相关工具

相关概念