forked from NyaaPantsu/nyaa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
crypto.go
38 lines (32 loc) · 918 Bytes
/
crypto.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package crypto
import (
"crypto/md5"
"crypto/rand"
"fmt"
"strings"
)
// GenerateMD5Hash : Generate a md5 hash from a string
func GenerateMD5Hash(str string) (string, error) {
str = strings.ToLower(strings.TrimSpace(str))
hash := md5.New()
_, err := hash.Write([]byte(str))
if err != nil {
return "", err
}
return fmt.Sprintf("%x", hash.Sum(nil)), nil
}
// GenerateRandomToken16 : Generates a random token 16bits long
func GenerateRandomToken16() (string, error) {
return GenerateRandomToken(16)
}
// GenerateRandomToken32 : Generates a random token 32bits long
func GenerateRandomToken32() (string, error) {
return GenerateRandomToken(32)
}
// GenerateRandomToken : Generates a random token int n long
func GenerateRandomToken(n int) (string, error) {
token := make([]byte, n)
_, err := rand.Read(token)
// %x base 16, lower-case, two characters per byte
return fmt.Sprintf("%x", token), err
}