miniflux-v2/crypto/crypto.go

39 lines
887 B
Go
Raw Permalink Normal View History

2018-01-03 04:15:08 +01:00
// Copyright 2018 Frédéric Guillot. All rights reserved.
2017-11-20 06:10:04 +01:00
// Use of this source code is governed by the Apache 2.0
// license that can be found in the LICENSE file.
2018-01-03 04:15:08 +01:00
package crypto
2017-11-20 06:10:04 +01:00
import (
"crypto/rand"
"crypto/sha256"
"encoding/base64"
"fmt"
)
// HashFromBytes returns a SHA-256 checksum of the input.
func HashFromBytes(value []byte) string {
sum := sha256.Sum256(value)
return fmt.Sprintf("%x", sum)
}
// Hash returns a SHA-256 checksum of a string.
func Hash(value string) string {
return HashFromBytes([]byte(value))
}
// GenerateRandomBytes returns random bytes.
func GenerateRandomBytes(size int) []byte {
b := make([]byte, size)
if _, err := rand.Read(b); err != nil {
2017-11-25 01:09:10 +01:00
panic(err)
2017-11-20 06:10:04 +01:00
}
return b
}
// GenerateRandomString returns a random string.
func GenerateRandomString(size int) string {
return base64.URLEncoding.EncodeToString(GenerateRandomBytes(size))
}