file-transfer/utils.go
2025-02-07 00:24:26 +01:00

36 lines
659 B
Go

package main
import (
"crypto/rand"
"golang.org/x/crypto/sha3"
)
func randomBytes(size int) ([]byte, error) {
randBytes := make([]byte, size)
_, err := rand.Read(randBytes)
if err != nil {
return nil, err
}
return randBytes, nil
}
func hashPasswordWihSalt(password string, salt []byte) ([]byte, []byte, error) {
if salt == nil {
var err error
if salt, err = randomBytes(64); err != nil {
return nil, nil, err
}
}
hasher := sha3.New512()
if _, err := hasher.Write(salt); err != nil {
return nil, nil, err
}
if _, err := hasher.Write([]byte(password)); err != nil {
return nil, nil, err
}
return salt, hasher.Sum(nil), nil
}