Mercurial > gemma
view pkg/common/random.go @ 904:e4b72a199258
New default bottleneck colors
Mainly to make the stroke color one actually selectable in the ui.
In addition the pink does better match the collors used on the ECDIS layer.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Tue, 02 Oct 2018 13:34:59 +0200 |
parents | c1047fd04a3a |
children | a244b18cb916 |
line wrap: on
line source
package common import ( "bytes" "crypto/rand" "io" "log" "math/big" ) func GenerateRandomKey(length int) []byte { k := make([]byte, length) if _, err := io.ReadFull(rand.Reader, k); err != nil { return nil } return k } func RandomString(n int) string { const ( special = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + special ) max := big.NewInt(int64(len(alphabet))) out := make([]byte, n) for i := 0; i < 1000; i++ { for i := range out { v, err := rand.Int(rand.Reader, max) if err != nil { log.Panicf("error: %v\n", err) } out[i] = alphabet[v.Int64()] } // Ensure at least one special char. if bytes.IndexAny(out, special) >= 0 { return string(out) } } log.Println("warn: Your random generator may be broken.") out[0] = special[0] return string(out) }