libsodium一个现代密码学(加密)库
libsodium 是一个现代密码学(加密)库,目标只有一个:让开发者安全、正确、简单地使用加密技术。它可以理解为“把复杂密码学封装成不容易用错的工具箱”。
一、它解决什么问题?
如果自己直接用底层加密库,常见问题包括:
- 算法选错(用过时算法)
- 密钥长度错误
- 随机数生成不安全
- IV / nonce 重复
- 填充模式错误
- API 用错导致漏洞
libsodium 的设计理念是:
默认给你安全参数,避免开发者做危险选择。
二、核心功能模块
1)数据加密
用于客户端与服务器通信、代理协议等:
明文 → 加密 → 网络传输 → 解密 → 明文
支持现代算法:
- AES-GCM
- ChaCha20-Poly1305(弱 CPU 上更快)
Shadowsocks 等代理软件就依赖这类加密。
2)认证与完整性校验
确保数据没被篡改:
数据 + 密钥 → 生成认证码
接收方验证:
- 数据是否被修改
- 是否来自可信来源
3)密码哈希
用于用户密码存储:
密码 → 加盐 + 哈希 → 存库
即使数据库泄露,也难以反推原始密码。
4)安全随机数生成
很多安全系统失败,都是随机数生成不安全导致:
- 会话密钥
- token
- nonce
libsodium 提供安全随机数接口。
5)公钥加密(非对称)
适用于:
- 密钥交换
- 安全通信初始化
- 零信任网络
三、应用场景
代理软件
VPN
安全通信服务
密码存储服务
身份认证系统
很多容器镜像或代理服务启动失败,原因就是:
缺少 libsodium 动态库
四、libsodium 的工程价值
让密码学“默认安全”
你不需要理解所有密码学细节,也能避免大多数安全错误。