Skip to content
This repository has been archived by the owner on Feb 9, 2023. It is now read-only.
/ gobbs Public archive

A Blum-Blum-Shub-Generator written in Go

License

Notifications You must be signed in to change notification settings

tsdtsdtsd/gobbs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gobbs

Build Status Go Report Card Godoc

A Blum-Blum-Shub-Generator in Go.

Status

Testing

Usage

Create a new generator with default config:

import "github.com/tsdtsdtsd/gobbs"

g, err := gobbs.New()

New() will generate two random blum primes, a blum integer and a random seed. If you want to use your own numbers from an other source, you can use NewWithConfig():

g, err := gobbs.NewWithConfig(&gobbs.Config{
    PrimeP: myPrimeOne,
    PrimeQ: myPrimeTwo,
    Seed: mySeed,
    Bits: 1024,
})

The generator implements io.Reader:

buf := make([]byte, 1)

for {
    g.Read(buf)
    fmt.Printf("%02x.", buf)
}

Benchmarks

bits = 1024
readLength = 512

> go test -bench=. -benchmem -count 3
goos: windows
goarch: amd64
pkg: github.com/tsdtsdtsd/gobbs
BenchmarkInit-8               10         298040350 ns/op         2540071 B/op       8105 allocs/op
BenchmarkInit-8                3         399833433 ns/op         3571288 B/op      11109 allocs/op
BenchmarkInit-8                5         297086520 ns/op         2594611 B/op       8185 allocs/op
BenchmarkRead-8               50          37528676 ns/op         9440499 B/op      16393 allocs/op
BenchmarkRead-8               50          37291990 ns/op         9440641 B/op      16394 allocs/op
BenchmarkRead-8               50          38036620 ns/op         9440500 B/op      16393 allocs/op
PASS
ok      github.com/tsdtsdtsd/gobbs      13.857s

Credits

Heavily inspired by (basically a port of) https://github.com/foolean/blum-blum-shub