• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# rand_chacha
2
3[![Test Status](https://github.com/rust-random/rand/workflows/Tests/badge.svg?event=push)](https://github.com/rust-random/rand/actions)
4[![Latest version](https://img.shields.io/crates/v/rand_chacha.svg)](https://crates.io/crates/rand_chacha)
5[![Book](https://img.shields.io/badge/book-master-yellow.svg)](https://rust-random.github.io/book/)
6[![API](https://img.shields.io/badge/api-master-yellow.svg)](https://rust-random.github.io/rand/rand_chacha)
7[![API](https://docs.rs/rand_chacha/badge.svg)](https://docs.rs/rand_chacha)
8[![Minimum rustc version](https://img.shields.io/badge/rustc-1.36+-lightgray.svg)](https://github.com/rust-random/rand#rust-version-requirements)
9
10A cryptographically secure random number generator that uses the ChaCha
11algorithm.
12
13ChaCha is a stream cipher designed by Daniel J. Bernstein[^1], that we use
14as an RNG. It is an improved variant of the Salsa20 cipher family, which was
15selected as one of the "stream ciphers suitable for widespread adoption" by
16eSTREAM[^2].
17
18The RNGs provided by this crate are implemented via the fast stream ciphers of
19the [`c2-chacha`](https://crates.io/crates/c2-chacha) crate.
20
21Links:
22
23-   [API documentation (master)](https://rust-random.github.io/rand/rand_chacha)
24-   [API documentation (docs.rs)](https://docs.rs/rand_chacha)
25-   [Changelog](https://github.com/rust-random/rand/blob/master/rand_chacha/CHANGELOG.md)
26
27[rand]: https://crates.io/crates/rand
28[^1]: D. J. Bernstein, [*ChaCha, a variant of Salsa20*](
29      https://cr.yp.to/chacha.html)
30
31[^2]: [eSTREAM: the ECRYPT Stream Cipher Project](
32      http://www.ecrypt.eu.org/stream/)
33
34
35## Crate Features
36
37`rand_chacha` is `no_std` compatible when disabling default features; the `std`
38feature can be explicitly required to re-enable `std` support. Using `std`
39allows detection of CPU features and thus better optimisation.
40
41
42# License
43
44`rand_chacha` is distributed under the terms of both the MIT license and the
45Apache License (Version 2.0).
46
47See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT), and
48[COPYRIGHT](COPYRIGHT) for details.
49