Maintainer: Debian Go Packaging Team <email@example.com>
Uploaders: Bjorn Dolk <firstname.lastname@example.org>
Build-Depends: debhelper (>= 10),
Description: 10x faster than crypto/rand
(https://godoc.org/github.com/NebulousLabs/fastrand) Go Report Card
go get github.com/NebulousLabs/fastrand
fastrand implements a cryptographically secure pseudorandom number
generator. The generator is seeded using the system's default entropy
source, and thereafter produces random values via repeated hashing. As
a result, fastrand can generate randomness much faster than crypto/rand,
and generation cannot fail beyond a potential panic during init().
Unlike both crypto/rand and math/rand, fastrand provides significant
speedups when called using parallelism. In fact, fastrand can even
outperform math/rand when using enough threads.
Packages uses something similar to the Fortuna algorithm, which is used
in FreeBSD as its /dev/random. The techniques used by fastrand are known
to be secure, however the specific implementation has not been reviewed
extensively. Use with caution.
The general strategy is to use crypto/rand at init to get 32 bytes of
strong entropy. From there, the entropy concatenated to a counter and
hashed repeatedly, providing a new 64 bytes of random output each time
the counter is incremented. The counter is 16 bytes, which provides
strong guarantees that a cycle will not be seen throughout the lifetime
of the program.
The sync/atomic package is used to ensure that multiple threads calling
fastrand concurrently are always guaranteed to end up with unique
counters, allowing callers to see speedups by calling concurrently,
without compromising security.