• This repository has been archived on 09/Feb/2023
  • Stars
    star
    4
  • Rank 3,304,323 (Top 66 %)
  • Language
    Go
  • License
    MIT License
  • Created about 7 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Blum-Blum-Shub-Generator written in Go

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