func (f *FakeRNG) HexDigest(bytes int) (string, error) {
	return hexDigest(f, bytes)
}
Fake random number generator, never use in production. Always returns
a predictable hex-encoded (base16) string that looks like "00010203..."
package random
import (
	"crypto/rand"
	"encoding/hex"
	"io"
	"math"
	math_rand "math/rand"
)
type RandomProvider interface {
	Bytes(bytes int) ([]byte, error)
	HexDigest(bytes int) (string, error)
}
type CSPRNG struct{}
func (c *CSPRNG) Bytes(bytes int) ([]byte, error) {
	n := make([]byte, bytes)
	_, err := io.ReadFull(rand.Reader, n)
	if err != nil {
		return nil, err
	}
	return n, nil
}
func (c *CSPRNG) HexDigest(bytes int) (string, error) {
	return hexDigest(c, bytes)
}
type FakeRNG struct{}
func (f *FakeRNG) Bytes(bytes int) ([]byte, error) {
	b := make([]byte, bytes)
	for i := 0; i < len(b); i++ {
		b[i] = byte(i)
	}
	return b, nil
}