AES 是很常见的对称加密算法,意思是加密和解密使用同一把密钥。它常用于配置加密、接口调试、数据传输前处理和兼容旧系统。

你可以用 AES 加密解密工具 在浏览器本地测试明文、密钥、IV 和密文是否能互相对应。

AES 不是只填一个密码#

实际使用 AES 时,常见参数包括:

  • 密钥。
  • IV 或 nonce。
  • 加密模式,例如 CBC、GCM。
  • 填充方式。
  • 输入输出编码,例如 Base64、Hex、UTF-8。

如果前后端参数不一致,就会出现“密钥明明一样但解不开”的情况。

IV 不应该固定复用#

在很多模式下,IV 应该随机生成,并和密文一起保存或传输。它不一定需要保密,但不应该长期固定复用。

固定 IV 会降低安全性,尤其是重复加密相似内容时。

密钥长度要匹配#

常见 AES 密钥长度:

  • 128 bit
  • 192 bit
  • 256 bit

如果你用字符串当密钥,要确认最终字节长度。中文、emoji、不同编码都会影响字节数。

AES 和哈希不同#

AES 可以解密回明文;哈希通常不能还原。不要用 AES 存登录密码,密码存储应该使用 bcrypt、Argon2 这类密码哈希方案。

如果你要处理密码校验,可以看 bcrypt 哈希生成 / 校验工具

调试流程#

  1. 确认模式和填充。
  2. 确认密钥和 IV 编码。
  3. 确认明文编码。
  4. 确认密文是 Base64 还是 Hex。
  5. 用同一组参数在工具里复现。

接口文档应该写清什么#

如果 AES 用在接口里,文档不要只写“参数 AES 加密”。至少要写清:

  • 使用 AES-CBC、AES-GCM 还是其他模式。
  • 密钥如何生成和传递。
  • IV 是否随机,放在哪里。
  • 密文输出是 Base64 还是 Hex。
  • 字符串使用什么编码。

这些信息缺一项,联调时都可能卡很久。

总结#

AES 本身成熟可靠,但参数不清会导致解密失败或安全性下降。不要只保存“用了 AES”,要记录模式、IV、密钥来源和编码。

需要调试时,可以用 AES 加密解密工具 在本地复现,再把一致的参数写进接口文档。