Fcrand
⚡fcrand is a drop-in, high-performance alternative to Go "crypto/rand", providing cryptographically secure random bytes up to 10x faster.
Install / Use
/learn @sdrapkin/FcrandREADME
⚡fcrand (fast crypto rand)
fcrand is a high-performance drop-in replacement for Go's crypto/rand.<br>By Stan Drapkin.
Usage
- Find
"crypto/rand"imports in your Go code - Add a blank identifier
_in front:_ "crypto/rand" - Add
rand "github.com/sdrapkin/fcrand"
Features
- Up to 10x faster for random data requests ≤512 bytes
- Maintains all cryptographic security guarantees of
crypto/rand - 100% API compatible with
crypto/rand– true drop-in replacement - Thread-safe with zero configuration (same as
crypto/rand)
⚙️Before:
import (
"crypto/rand"
)
✅ After:
import (
_ "crypto/rand"
rand "github.com/sdrapkin/fcrand"
)
Example
package main
import (
"fmt"
rand "github.com/sdrapkin/fcrand"
)
func main() {
// Using rand.Read()
buf := make([]byte, 16)
rand.Read(buf)
fmt.Printf("rand.Read buf: [%x]\n", buf)
// Using rand.Reader
rand.Reader.Read(buf)
fmt.Printf("rand.Reader buf: [%x]\n", buf)
// Using .Text()
token := rand.Text()
fmt.Printf("token: [%s]\n", token)
// Use .Prime() with rand.Reader
key, err := rand.Prime(rand.Reader, 1024)
fmt.Printf("prime: [%q]\n%v\n", key, err)
}
Documentation
Full go doc style documentation: https://pkg.go.dev/github.com/sdrapkin/fcrand
Requirements
- Go 1.24+
Installation
Using go get
To install the fcrand package, run the following command:
go get -u github.com/sdrapkin/fcrand
To use the fcrand package in your Go project, import it as follows:
import rand "github.com/sdrapkin/fcrand"
FIPS Ready
- FIPS-140 ready (https://go.dev/doc/security/fips140)
- set
GODEBUG=fips140=onenvironment variable - https://go.dev/blog/fips140
- set
Benchmarks
Key observations: fcrand delivers 5-10x speedups for typical small requests, with even better concurrent performance. Performance falls back to crypto/rand levels at 512+ bytes as designed.
Serial bench (1 goroutine):
| buf size | #g | fcrand ns/op | crypto/rand ns/op | speedup % | speedup x | |------|---|---------|---------|------|-------| | 0 | 1 | 3.08 | 134.90 | 98% | 43.8x | | 1 | 1 | 23.21 | 209.30 | 89% | 9x | | 2 | 1 | 20.74 | 186.80 | 89% | 9x | | 3 | 1 | 19.80 | 181.50 | 89% | 9.2x | | 4 | 1 | 18.80 | 178.40 | 89% | 9.5x | | 5 | 1 | 20.04 | 182.00 | 89% | 9.1x | | 6 | 1 | 20.35 | 180.20 | 89% | 8.9x | | 7 | 1 | 27.09 | 186.10 | 85% | 6.9x | | 8 | 1 | 29.66 | 184.30 | 84% | 6.2x | | 9 | 1 | 29.31 | 189.40 | 85% | 6.5x | | 12 | 1 | 31.36 | 230.30 | 86% | 7.3x | | 16 | 1 | 34.62 | 208.20 | 83% | 6x | | 17 | 1 | 39.44 | 200.90 | 80% | 5.1x | | 25 | 1 | 41.59 | 219.90 | 81% | 5.3x | | 31 | 1 | 44.47 | 226.20 | 80% | 5.1x | | 32 | 1 | 37.36 | 223.00 | 83% | 6x | | 33 | 1 | 41.45 | 231.10 | 82% | 5.6x | | 48 | 1 | 45.92 | 252.10 | 82% | 5.5x | | 56 | 1 | 49.69 | 270.70 | 82% | 5.4x | | 57 | 1 | 52.92 | 329.70 | 84% | 6.2x | | 64 | 1 | 53.59 | 300.50 | 82% | 5.6x | | 65 | 1 | 72.28 | 290.10 | 75% | 4x | | 128 | 1 | 83.68 | 373.60 | 78% | 4.5x | | 256 | 1 | 139.40 | 423.40 | 67% | 3x | | 512 | 1 | 253.30 | 502.50 | 50% | 2x | | 513 | 1 | 554.30 | 545.20 | -2% | 1x | | 1024 | 1 | 702.60 | 688.80 | -2% | 1x | | 2048 | 1 | 1049.00 | 1120.00 | 6% | 1.1x | | 4096 | 1 | 1784.00 | 1775.00 | -1% | 1x |
Concurrent bench (64 goroutines on a 16 vCPU machine):
| buf size | #g | fcrand ns/op | crypto/rand ns/op | speedup % | speedup x | |------|----|--------|--------|-----|-------| | 0 | 64 | 0.72 | 58.45 | 99% | 81.2x | | 1 | 64 | 6.48 | 72.86 | 91% | 11.2x | | 2 | 64 | 6.37 | 73.87 | 91% | 11.6x | | 3 | 64 | 11.37 | 76.99 | 85% | 6.8x | | 4 | 64 | 12.24 | 85.54 | 86% | 7x | | 5 | 64 | 11.70 | 82.37 | 86% | 7x | | 6 | 64 | 11.88 | 89.45 | 87% | 7.5x | | 7 | 64 | 12.51 | 84.41 | 85% | 6.7x | | 8 | 64 | 13.38 | 80.34 | 83% | 6x | | 9 | 64 | 14.95 | 81.98 | 82% | 5.5x | | 12 | 64 | 14.10 | 80.43 | 82% | 5.7x | | 16 | 64 | 15.42 | 84.61 | 82% | 5.5x | | 17 | 64 | 14.85 | 93.45 | 84% | 6.3x | | 25 | 64 | 17.71 | 97.25 | 82% | 5.5x | | 31 | 64 | 18.72 | 97.43 | 81% | 5.2x | | 32 | 64 | 14.61 | 98.35 | 85% | 6.7x | | 33 | 64 | 15.81 | 102.00 | 85% | 6.5x | | 48 | 64 | 17.11 | 111.80 | 85% | 6.5x | | 56 | 64 | 18.06 | 122.10 | 85% | 6.8x | | 57 | 64 | 18.51 | 122.20 | 85% | 6.6x | | 64 | 64 | 18.68 | 127.60 | 85% | 6.8x | | 65 | 64 | 20.27 | 126.30 | 84% | 6.2x | | 128 | 64 | 28.68 | 142.20 | 80% | 5x | | 256 | 64 | 55.05 | 156.60 | 65% | 2.8x | | 512 | 64 | 100.50 | 182.10 | 45% | 1.8x | | 513 | 64 | 200.30 | 194.10 | -3% | 1x | | 1024 | 64 | 241.50 | 232.30 | -4% | 1x | | 2048 | 64 | 349.20 | 361.60 | 3% | 1x | | 4096 | 64 | 675.50 | 684.20 | 1% | 1x |
Related Skills
node-connect
348.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
348.5kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
109.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
