32 lines
586 B
Go
32 lines
586 B
Go
|
package fic
|
||
|
|
||
|
import (
|
||
|
"crypto/rand"
|
||
|
"encoding/base64"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func GeneratePassword() (password string, err error) {
|
||
|
// This will make a 12 chars long password
|
||
|
b := make([]byte, 9)
|
||
|
|
||
|
if _, err = rand.Read(b); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
password = base64.StdEncoding.EncodeToString(b)
|
||
|
|
||
|
// Avoid hard to read characters
|
||
|
for _, i := range [][2]string{
|
||
|
{"v", "*"}, {"u", "("},
|
||
|
{"l", "%"}, {"1", "?"},
|
||
|
{"o", "@"}, {"O", "!"}, {"0", ">"},
|
||
|
// This one is to avoid problem with openssl
|
||
|
{"/", "^"},
|
||
|
} {
|
||
|
password = strings.Replace(password, i[0], i[1], -1)
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|