Skip to content
Sections
>> Trisquel >> Paketler >> nabia >> devel >> golang-github-nebulouslabs-fastrand-dev
etiona  ] [  nabia  ] [  aramo  ]

Paket: golang-github-nebulouslabs-fastrand-dev (0.0~git20170512.60b6156-1)

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.

golang-github-nebulouslabs-fastrand-dev ile İlgili Diğer Paketler

  • bağımlılıklar
  • tavsiye edilen
  • önerilen

golang-github-nebulouslabs-fastrand-dev indir

Tüm mevcut mimariler için indir
Mimari Paket Boyutu Kurulu Boyut Dosyalar
all 8,1 kB36 kB [dosya listesi]