#stream-cipher #xchacha20 #crypto #chacha12 #chacha8

no-std chacha20

使用RustCrypto cipher crate中的特质,在纯Rust中实现的ChaCha20流密码(RFC 8439),可选的特定架构硬件加速(AVX2, SSE2)。此外还提供ChaCha8、ChaCha12、XChaCha20、XChaCha12和XChaCha8流密码,以及基于这些密码的与rand_core兼容的RNG。

21个版本

0.10.0-pre.12024年7月27日
0.9.1 2023年4月1日
0.9.0 2022年2月21日
0.8.2 2022年7月7日
0.0.0 2016年10月6日

1574加密学 中排名

Download history 215085/week @ 2024-04-25 208362/week @ 2024-05-02 208210/week @ 2024-05-09 233270/week @ 2024-05-16 232123/week @ 2024-05-23 229379/week @ 2024-05-30 201149/week @ 2024-06-06 210340/week @ 2024-06-13 207140/week @ 2024-06-20 205372/week @ 2024-06-27 187655/week @ 2024-07-04 197313/week @ 2024-07-11 213102/week @ 2024-07-18 217594/week @ 2024-07-25 201895/week @ 2024-08-01 194440/week @ 2024-08-08

每月下载量865,744
用于 1,187 个crate(95直接)

Apache-2.0 OR MIT

98KB
2K SLoC

RustCrypto: ChaCha20

Crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status HAZMAT

ChaCha20流密码的纯Rust实现。

文档

关于

ChaCha20 是一种 流密码,旨在支持高性能的软件实现。

它在性能不受影响的情况下,提高了先前 Salsa20 流密码的每轮扩散。

这个crate还包含了一个 XChaCha20 的实现:ChaCha20的一个变体,具有扩展的192位(24字节)nonce,在 chacha20 Cargo特性下(默认开启)。

实现

这个crate包含以下ChaCha20的实现,所有这些实现都在以下 RUSTFLAGS 下稳定运行

  • x86 / x86_64
    • avx2: (~1.4cpb) -Ctarget-cpu=haswell -Ctarget-feature=+avx2
    • sse2: (~2.5cpb) -Ctarget-feature=+sse2 (在x86 CPU上默认开启)
  • aarch64
    • neon (~2-3x faster than soft) requires Rust 1.61+ and the neon feature enabled
  • 可移植性
    • soft: (~5 cpb on x86/x86_64)

注意:cpb = 每字节周期数(越小越好)

安全性

⚠️ 警告:危险品!

此包不保证密文是真实的(即通过使用MAC来验证密文的完整性),如果使用不当可能会导致严重的安全漏洞!

为了避免这种情况,请使用基于ChaCha20的AEAD模式,即ChaCha20Poly1305。更多信息请参阅RustCrypto/AEADs仓库。

自行承担风险!

注意事项

此包已经接受了NCC Group的一次安全审计,没有发现重大问题。我们感谢MobileCoin资助此次审计。

包中包含的所有实现(包括底层ChaCha20流密码本身)都设计为在常数时间内执行。

最低支持的Rust版本

Rust 1.65 或更高版本。

最低支持的Rust版本可能会在未来更改,但将通过小版本号的增加来完成。

SemVer策略

  • 此库的所有默认启用功能都受SemVer覆盖。
  • 如上所述,MSRV被认为不受SemVer约束。

许可证

根据您的选择,许可协议为以下之一:

贡献

除非您明确声明,否则任何有意提交以供包含在作品中的贡献(如Apache-2.0许可证中定义),均应按上述方式双许可,不附加任何额外的条款或条件。

依赖项

~340–790KB
~17K SLoC