AES-128加密后,不同文件大小增加的空间比例

我们来精确分析 AES-128(块大小16字节,PKCS#7 填充)加密后,不同文件大小增加的空间比例


1️⃣ AES 填充规则

  • AES 分组大小:16 字节
  • 填充方式:PKCS#7
  • 原文长度对 16 取余 r = 原文长度 % 16
  • 填充字节数 = 16 – r(如果 r=0,则填充 16 字节)

增加空间百分比公式

增加百分比=原文字节数16÷(原文字节数mod16)​×100%


2️⃣ 计算示例

原文大小填充字节数(最坏情况)增加百分比(约)
1 字节15 字节1500%
1 KB (1024 B)16 字节1.56%
1 MB (1,048,576 B)16 字节0.0015%
1 GB (1,073,741,824 B)16 字节0.0000015%
1 TB (1,099,511,627,776 B)16 字节0.0000000015%

3️⃣ 总结

  • 非常小的文件(1 字节、几 KB):填充占比很高,可能几倍
  • 普通文件(1 MB 以上):填充占比几乎可以忽略
  • 大文件(GB / TB):填充占比微不足道

✅ 对大数据量来说,AES 加密不会显著增加文件大小。


号外——解密耗时

不同文本大小下,使用 AES-128 + AES-NI 解密的耗时估算表,假设单线程,解密速度约 1.5 GB/s,使用 NVMe SSD,I/O 足够快。

文本大小字节数 (≈)解密耗时(秒)备注
10 MB1.05 × 10⁷0.007 秒几毫秒,瞬间完成
100 MB1.05 × 10⁸0.07 秒仍然非常快
1 GB1.07 × 10⁹0.7 秒几乎瞬时
10 GB1.07 × 10¹⁰7 秒秒级完成
100 GB1.07 × 10¹¹70 秒约 1 分钟多一点
1 TB1.07 × 10¹²700 秒≈ 11–12 分钟
10 TB1.07 × 10¹³7000 秒≈ 2 小时