当前位置:在线工具>加密解密>AES-128-CBC加密 / AES-256-CBC加密
填写明文内容*
加密的密钥*
加密模式:
IV 初始化向量:
16进制iv值示例
填充算法:PKCS7Padding (PKCS#7)
结果编码形式:
名称加密的结果
加密模式
IV(16进制)
加密密钥
密文内容(base64编码)
使用说明

请仔细阅读:

  1. 当 "IV 初始化向量" 填写为空时,服务端自动填充 16 位伪随机字节串。因为 iv 是 byte 数据类型,所以在结果中转换为(肉眼可识别):十六进制字符串。
  2. 如何把十六进制转换为二进制?比如:您可以通过 PHP 函数 hex2bin 转换为二进制值。您可以通过 Go 函数 strconv 转换为二进制值。
  3. 该工具会自动删除 “内容、iv、秘钥” 前后多余的空格,这个是基础功能了。
  4. 在 Go 语言中 AES 秘钥的长度(16/24/32)决定不同的加密强度。以CBC加密模式举例,例如:秘钥长度16字节(128位密钥),对应 AES-128-CBC;秘钥长度24字节(192位密钥),对应 AES-192-CBC;秘钥长度32字节(256位密钥),对应 AES-256-CBC。
  5. Go 1.24 标记 CFB 、OFB 模式为废弃(deprecated),不建议应用新项目,被弃用的根本原因是存在严重的安全与设计缺陷。
  6. 站长发现很多“在线工具”、“技术博客”对 AES CBC 系列加密、解密,漏掉了IV参数,这是错误的!也没有把CBC数据填充讲明白!

关于 AES-CBC 数据填充算法,本工具只提供一种 PKCS#7 说明如下:

NoPadding

顾名思义,NoPadding 就是不填充的意思。其缺点是要求明文必须是16字节的整数倍。业内没人会使用。

PKCS7Padding (推荐)

言简意赅,就是缺几补几。例如:数据体1234567890AA差4补齐16字节,则在数据末尾增补的内容是数字4。

PKCS5Padding

准确来讲:AES加密没有PKCS#5。AES的块大小是16bytes,而PKCS#5只能用于8bytes。

ZeroPadding

数据长度不对齐时使用0填充。仅适合以\0结尾的数据,缺点没办法区分真实数据与填充数据。业内没人会使用。

图示教程