11个稳定版本
| 1.6.0 | 2023年2月26日 |
|---|---|
| 1.5.3 | 2022年10月18日 |
| 1.5.2 | 2022年8月23日 |
| 1.5.1 | 2022年6月27日 |
| 0.2.1 |
|
#11 in 编码
3,239,407 每月下载量
在 2,901 个crate中使用 (118 个直接使用)
72KB
1.5K SLoC
RustCrypto: 恒定时间Base64
Base64 (RFC 4648) 的纯Rust实现。
实现了多个Base64字母表,没有数据相关分支或查找表,从而提供了可移植的“尽力而为”恒定时间操作。
支持no_std环境,并在核心API中避免堆分配(但还提供可选的alloc支持,方便使用)。
关于
此crate以恒定时间实现几个Base64字母表,以抵抗侧信道攻击,旨在用于像存储加密私钥(如pem-rfc7468 crate中的“PEM”格式)这样的编码/解码。
论文Util::Lookup: Exploiting key decoding in cryptographic libraries展示了如何使用非恒定时间Base64解析器的泄漏从SGX enclaves中实际提取RSA私钥。
填充变体需要(=)填充。未填充的变体明确拒绝此类填充。
显式不允许空白字符,但Decoder::new_wrapped和Encoder::new_wrapped模式提供固定宽度的换行。
支持的Base64变体
- 标准Base64:
[A-Z],[a-z],[0-9],+,/ - URL安全的Base64:
[A-Z],[a-z],[0-9],-,_ - bcrypt Base64:
.,/,[0-9],[A-Z],[a-z] crypt(3)Base64:.,-,[0-9],[A-Z],[a-z]
支持的最小Rust版本
此crate至少需要Rust 1.60。
我们可能会在将来更改MSRV,但将伴随着小版本号的增加。
许可证
根据您的选择,许可方式为以下之一
。
贡献
除非您明确声明,否则您有意提交给作品(根据Apache-2.0许可证定义)的任何贡献,将如上所述双重许可,没有任何附加条款或条件。