#base64 #constant-time #decoding #simd #codec #side-channel #platform

无std b64-ct

快速且安全的Base64编码/解码。这个crate提供了一个设计用于抵御软件旁路攻击(如时间攻击和缓存攻击)的Base64编码/解码实现,请参阅文档以获取详细信息。在特定平台上,它还使用SIMD指令,使其非常快。这使得它适用于解码PEM格式的加密私钥等场景。其API与旧版rustc-serialize crate中的base64实现非常相似,因此在现有项目中使用起来非常方便。

3个版本

0.1.2 2024年4月24日
0.1.1 2020年6月8日
0.1.0 2020年4月23日

密码学类别中排名183

Download history 185/week @ 2024-04-25 181/week @ 2024-05-02 162/week @ 2024-05-09 198/week @ 2024-05-16 263/week @ 2024-05-23 180/week @ 2024-05-30 129/week @ 2024-06-06 110/week @ 2024-06-13 152/week @ 2024-06-20 123/week @ 2024-06-27 117/week @ 2024-07-04 103/week @ 2024-07-11 170/week @ 2024-07-18 264/week @ 2024-07-25 297/week @ 2024-08-01 144/week @ 2024-08-08

每月下载量895
6个crate中使用了(直接使用3个)

MPL-2.0 许可协议

65KB
1.5K SLoC

快速且安全的Base64编码/解码

这个crate提供了一个设计用于抵御软件旁路攻击(如时间攻击和缓存攻击)的Base64编码/解码实现,请参阅文档以获取详细信息。在特定平台上,它还使用SIMD指令,使其非常快。这使得它适用于解码PEM格式的加密私钥等场景。

其API与旧版rustc-serialize crate中的base64实现非常相似,因此在现有项目中使用起来非常方便。

实现

根据运行时的CPU架构,这个crate使用不同安全属性的不同的实现。

  • x86与AVX2:所有查找表都使用SIMD指令实现。没有依赖于秘密的内存访问。
  • 其他平台:查找限于64字节对齐的查找表。在具有64字节缓存行的平台上,这可能足以防止某些缓存旁路攻击。然而,已知这一点[对所有平台来说都不充分]。

我们热烈欢迎为其他平台提供贡献支持!

贡献

我们感谢社区提交的bug报告和贡献。通过参与这个社区,你同意遵守行为准则。所有贡献都受开发者证书的原始(DCO)的约束。

开发者证书原始(DCO)1.1

通过向此项目做出贡献,我证明

(a)该贡献全部或部分由我创建,我有权在文件中指定的开源许可下提交它;或

(b)该贡献基于以前的工作,据我所知,该工作受适当的开源许可保护,并且我有权在该许可下提交该工作,无论其全部或部分由我创建,均在同一开源许可下(除非我获准在另一许可下提交),如文件中所示;或

(c)该贡献是由其他人员直接提供给我的,该人员已证明(a)、(b)或(c)的内容,并且我没有修改它。

我理解并同意,该项目和贡献是公开的,并且贡献的记录(包括我提交的所有个人信息,包括我的签名)将无限期地保持,并且可以根据本项目或相关开源许可重新分发。

许可

本项目主要在Mozilla公共许可证(MPL)2.0的条款下分发,有关详细信息,请参阅LICENSE

无运行时依赖