| 标准 | NIST SP 800-38D |
|---|---|
| IV 长度 | 推荐 96 位(12 字节) |
| 认证标签 | 常用 128 位 |
| 结构 | CTR 加密 + GHASH 认证 |
Python 使用示例(cryptography)
Python 使用示例(cryptography)
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os
key = AESGCM.generate_key(bit_length=256)
aead = AESGCM(key)
nonce = os.urandom(12) # 96 位随机 nonce
ct = aead.encrypt(nonce, b"payload", b"aad")
pt = aead.decrypt(nonce, ct, b"aad") # 认证失败抛 InvalidTag同一密钥下 nonce 绝不能重复:GCM nonce 重用会泄漏认证子密钥并可伪造消息(forbidden attack),随机 nonce 的单密钥调用次数应控制在 NIST 建议上限内。