首页/安全/加密与证书速查/Poly1305 一次性认证码
加密算法基础95 条

Poly1305 一次性认证码

RFC 8439 定义的认证算法:使用 32 字节一次性密钥对消息生成 16 字节标签,通常与 ChaCha20 组合为 AEAD 使用。

加密与证书速查安全更新于 2026-10-12
标准RFC 8439
密钥256 位,每消息一次性使用
标签128 位
组合ChaCha20-Poly1305(AEAD)

Python 示例(cryptography)

Python 示例(cryptography)
from cryptography.hazmat.primitives.poly1305 import Poly1305
import os

key = os.urandom(32)
tag = Poly1305.generate_tag(key, b"message")
Poly1305.verify_tag(key, b"message", tag)
Poly1305 的安全性依赖密钥一次性:同一密钥认证两条消息会泄漏密钥材料,可直接伪造标签。

易错点

  • 把 Poly1305 当通用 MAC 复用密钥会直接破坏认证安全性
  • 与 ChaCha20 组合时密钥派生要按 RFC 8439 的规则处理,不能直接用约定字符串

数据来源与参考

  • RFC 8439 §2.5(Poly1305)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌