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许可证定义)的任何贡献,将如上所述双重许可,没有任何附加条款或条件。