libsodium
更新于 2026-09-03 15:41:31 · 创建于 2026-09-03 15:36:23
libsodium:开箱即用的 C 语言加密库
libsodium 是一个现代、易用且跨平台的 C 语言加密库(GitHub 约 13k Star),由 jedisct1 维护,目标是让开发者“不用成为密码学专家也能安全地做加密”。它把 NaCl 的设计理念做得更易集成,并为常见安全操作提供高层次的 API,避免直接使用底层原语时踩坑。
核心能力
- 对称加密:crypto_secretbox(XSalsa20-Poly1305)、AEAD 族(ChaCha20-Poly1305、XChaCha20-Poly1305、AES-256-GCM)等。
- 公钥加密与签名:crypto_box(Curve25519 + XSalsa20-Poly1305)、sealed box、Ed25519 数字签名。
- 密钥交换与认证:crypto_kx 基于 X25519 的密钥协商,以及认证式消息认证码(HMAC、Poly1305)。
- 哈希与密码哈希:SHA-512、BLAKE2b,以及 Argon2 / scrypt 等抗暴力破解的密码哈希(用于安全存储口令)。
- 辅助能力:安全随机数生成、内存安全擦除、短哈希(SipHash)等。
- 跨平台与可移植:提供稳定 ABI,支持 Linux/macOS/Windows 及嵌入式、WASM 等多种环境,众多语言有官方或社区绑定。
适用场景
- 安全通信(端到端加密、传输层载荷加密)。
- 数据保护(静态加密、密钥派生、口令安全存储)。
- 需要签名/验签、令牌防篡改的应用与服务。
上手与二开建议
- 直接 pkg-config 链接,或用各语言封装(如 Python 的 PyNaCl、Rust 的 libsodium-sys)调用高层 API,避免手搓算法参数。
- 优先使用库推荐的 box/secretbox 等高阶原语,而非单独挑选底层算法。
- 二开/集成:关注常量时间比较、随机数源与内存擦除等安全细节,库已代为处理大部分。
注意事项
- 上手难度中等:API 简洁,但安全实现仍需注意密钥管理与随机数使用。
- 仅代码本体为 ISC 协议;集成到具体产品时需配合整体安全设计(密钥轮换、传输安全等)。