#encryption #cha-cha #simd

no-std chachacha

SIMD optimized implementations of the Chacha stream cipher

10 unstable releases (3 breaking)

Uses new Rust 2024

0.4.2 Aug 30, 2025
0.4.1 Aug 24, 2025
0.3.1 Jun 5, 2025
0.3.0 May 8, 2025
0.1.3 Apr 21, 2025

#672 in Cryptography

Download history 28/week @ 2025-10-01 7/week @ 2025-10-08 9/week @ 2025-10-15 8/week @ 2025-10-22

650 downloads per month
Used in 2 crates (via ya-rand)

MIT license

91KB
2K SLoC

ChaChaCha: ChaCha with a little extra Cha

Extremely fast ChaCha implementation. Primarily made for use as a CRNG in the ya-rand crate, but should be just as usable anywhere else you might want to use ChaCha.

Examples

use chachacha::{BUF_LEN_U64, BUF_LEN_U8, ChaCha12Djb};

// Create a new `ChaCha12Djb` instance with a key that is all ones,
// a counter starting at 69, and a nonce of 0 and 1 (the last nonce
// value is discarded in the `Djb` variants).
let mut chacha = ChaCha12Djb::new([u32::MAX; 8],
                                   69,
                                  [0, 1, 2]);
// 256 bytes of output
let block_output: [u8; BUF_LEN_U8] = chacha.get_block();
let all_zeros = block_output.into_iter().all(|v| v == 0);
assert!(!all_zeros);

Dependencies