Package: golang-github-nebulouslabs-fastrand-dev (0.0~git20170512.60b6156-1)
Links for golang-github-nebulouslabs-fastrand-dev
Download Source Package golang-github-nebulouslabs-fastrand:
- Homepage [github.com]
10x faster than crypto/rand
fastrand GoDoc (https://godoc.org/github.com/NebulousLabs/fastrand) Go Report Card (https://goreportcard.com/report/github.com/NebulousLabs/fastrand)
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.
Other Packages Related to golang-github-nebulouslabs-fastrand-dev