stash/pkg/hash/key.go
WithoutPants f69bd8a94f
Restructure go project (#2356)
* Move main to cmd
* Move api to internal
* Move logger and manager to internal
* Move shell hiding code to separate package
* Decouple job from desktop and utils
* Decouple session from config
* Move static into internal
* Decouple config from dlna
* Move desktop to internal
* Move dlna to internal
* Decouple remaining packages from config
* Move config into internal
* Move jsonschema and paths to models
* Make ffmpeg functions private
* Move file utility methods into fsutil package
* Move symwalk into fsutil
* Move single-use util functions into client package
* Move slice functions to separate packages
* Add env var to suppress windowsgui arg
* Move hash functions into separate package
* Move identify to internal
* Move autotag to internal
* Touch UI when generating backend
2022-03-17 11:33:59 +11:00

27 lines
779 B
Go

// Package hash provides utility functions for generating hashes from strings and random keys.
package hash
import (
"crypto/rand"
"fmt"
"hash/fnv"
)
// GenerateRandomKey generates a random string of length l.
// It returns an empty string and an error if an error occurs while generating a random number.
func GenerateRandomKey(l int) (string, error) {
b := make([]byte, l)
if _, err := rand.Read(b); err != nil {
return "", err
}
return fmt.Sprintf("%x", b), nil
}
// IntFromString generates a uint64 from a string.
// Values returned by this function are guaranteed to be the same for equal strings.
// They are not guaranteed to be unique for different strings.
func IntFromString(str string) uint64 {
h := fnv.New64a()
h.Write([]byte(str))
return h.Sum64()
}