| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package security
- import (
- "crypto/rand"
- "crypto/sha256"
- "encoding/base64"
- "encoding/hex"
- )
- func GenerateToken(byteLength int) (string, error) {
- raw := make([]byte, byteLength)
- if _, err := rand.Read(raw); err != nil {
- return "", err
- }
- return base64.RawURLEncoding.EncodeToString(raw), nil
- }
- func GenerateNumericCode(length int) (string, error) {
- if length <= 0 {
- length = 6
- }
- const digits = "0123456789"
- raw := make([]byte, length)
- if _, err := rand.Read(raw); err != nil {
- return "", err
- }
- code := make([]byte, length)
- for i := range raw {
- code[i] = digits[int(raw[i])%len(digits)]
- }
- return string(code), nil
- }
- func HashText(value string) string {
- sum := sha256.Sum256([]byte(value))
- return hex.EncodeToString(sum[:])
- }
- func GeneratePublicID(prefix string) (string, error) {
- raw := make([]byte, 8)
- if _, err := rand.Read(raw); err != nil {
- return "", err
- }
- return prefix + "_" + hex.EncodeToString(raw), nil
- }
|