@@ -39,10 +39,10 @@ You may wish to refer to the [pcg-random] and [xoshiro] websites.
3939
4040| name | full name | performance | memory | quality | period | features |
4141| ------| -----------| -------------| --------| ---------| --------| ----------|
42- | [ ` SmallRng ` ] | (unspecified) | 11 GB/s | 16 bytes | ★★★☆☆ | ≥ ` u32 ` * 2<sup >64</sup > | not portable |
43- | [ ` Pcg32 ` ] | PCG XSH RR 64/32 (LCG) | 5 GB/s | 16 bytes | ★★★☆☆ | ` u32 ` * 2<sup >64</sup > | — |
44- | [ ` Pcg64 ` ] | PCG XSL 128/64 (LCG) | 7 GB/s | 32 bytes | ★★★☆☆ | ` u64 ` * 2<sup >128</sup > | — |
45- | [ ` Pcg64Mcg ` ] | PCG XSL 128/64 (MCG) | 8 GB/s | 16 bytes | ★★★☆☆ | ` u64 ` * 2<sup >126</sup > | — |
42+ | [ ` SmallRng ` ] | (unspecified) | fast | small | ★★★☆☆ | ≥ ` u32 ` * 2<sup >64</sup > | not portable |
43+ | [ ` Pcg32 ` ] | PCG XSH RR 64/32 (LCG) | 5 GB/s | 16 bytes | ★★★☆☆ | ` u32 ` * 2<sup >64</sup > | jump-ahead |
44+ | [ ` Pcg64 ` ] | PCG XSL 128/64 (LCG) | 7 GB/s | 32 bytes | ★★★☆☆ | ` u64 ` * 2<sup >128</sup > | jump-ahead |
45+ | [ ` Pcg64Mcg ` ] | PCG XSL 128/64 (MCG) | 8 GB/s | 16 bytes | ★★★☆☆ | ` u64 ` * 2<sup >126</sup > | jump-ahead |
4646| [ ` XorShiftRng ` ] | Xorshift 32/128 | 7 GB/s | 16 bytes | ★☆☆☆☆ | ` u32 ` * 2<sup >128</sup > - 1 | — |
4747| [ ` Xoshiro256PlusPlus ` ] | Xoshiro256++ | 11 GB/s | 32 bytes | ★★★☆☆ | ` u64 ` * 2<sup >256</sup > - 1 | jump-ahead |
4848| [ ` Xoshiro256Plus ` ] | Xoshiro256+ | 13 GB/s | 32 bytes | ★★☆☆☆ | ` u64 ` * 2<sup >256</sup > - 1 | jump-ahead |
@@ -79,13 +79,16 @@ table since CSPRNGs may not have observable defects.
7979
8080| name | full name | performance | initialization | memory | security (predictability) | forward secrecy |
8181| ------| -----------| --------------| --------------| ----------| ----------------| -------------------------|
82- | [ ` StdRng ` ] | (unspecified) | 4.1 GB/s | fast | 136 bytes | widely trusted | no |
83- | [ ` ChaCha20Rng ` ] | ChaCha20 | 2.6 GB/s | fast | 136 bytes | [ rigorously analysed] ( https://tools.ietf.org/html/rfc7539#section-1 ) | no |
84- | [ ` ChaCha8Rng ` ] | ChaCha8 | 5.8 GB/s | fast | 136 bytes | small security margin | no |
82+ | [ ` StdRng ` ] | (unspecified) | fast | fast | (unspecified) | widely trusted | no |
83+ | [ ` ChaCha20Rng ` ] | ChaCha20 | 2.6 GB/s | fast | 320 bytes[ ^ size ] | [ rigorously analysed] ( https://tools.ietf.org/html/rfc7539#section-1 ) | no |
84+ | [ ` ChaCha12Rng ` ] | ChaCha12 | 4.1 GB/s | fast | 320 bytes[ ^ size ] | [ large security margin] ( https://eprint.iacr.org/2019/1492 ) | no |
85+ | [ ` ChaCha8Rng ` ] | ChaCha8 | 5.8 GB/s | fast | 320 bytes[ ^ size ] | [ sufficient security margin] ( https://eprint.iacr.org/2019/1492 ) | no |
8586| [ ` Hc128Rng ` ] | HC-128 | 4.6 GB/s | slow | 4176 bytes | [ recommended by eSTREAM] ( http://www.ecrypt.eu.org/stream/ ) | no |
8687| [ ` IsaacRng ` ] | ISAAC | 2.1 GB/s | slow | 2072 bytes | [ unknown] ( https://burtleburtle.net/bob/rand/isaacafa.html ) | unknown |
8788| [ ` Isaac64Rng ` ] | ISAAC-64 | 3.7 GB/s | slow | 4136 bytes| unknown | unknown |
8889
90+ [ ^ size ] : The size is an implementation detail, and may change.
91+
8992It should be noted that the ISAAC generators are only included for
9093historical reasons: they have been with the Rust language since the very
9194beginning. They have good quality output and no attacks are known, but have
@@ -322,6 +325,7 @@ by P. Hellekalek.
322325[ `Xoshiro256Plus` ] : https://docs.rs/rand_xoshiro/latest/rand_xoshiro/struct.Xoshiro256Plus.html
323326[ `SplitMix64` ] : https://docs.rs/rand_xoshiro/latest/rand_xoshiro/struct.SplitMix64.html
324327[ `ChaCha20Rng` ] : https://docs.rs/chacha20/latest/chacha20/struct.ChaCha20Rng.html
328+ [ `ChaCha12Rng` ] : https://docs.rs/chacha20/latest/chacha20/struct.ChaCha12Rng.html
325329[ `ChaCha8Rng` ] : https://docs.rs/chacha20/latest/chacha20/struct.ChaCha8Rng.html
326330[ `Hc128Rng` ] : https://docs.rs/rand_hc/latest/rand_hc/struct.Hc128Rng.html
327331[ `IsaacRng` ] : https://docs.rs/rand_isaac/latest/rand_isaac/isaac/struct.IsaacRng.html
0 commit comments