35 lines
793 B
Go
35 lines
793 B
Go
package tool
|
||
|
||
import (
|
||
"crypto/md5"
|
||
"crypto/sha512"
|
||
"encoding/hex"
|
||
"fmt"
|
||
"strings"
|
||
|
||
"github.com/anaskhan96/go-password-encoder"
|
||
)
|
||
|
||
var options = &password.Options{SaltLen: 16, Iterations: 100, KeyLen: 32, HashFunction: sha512.New}
|
||
|
||
func EncodePassWord(str string) string {
|
||
salt, encodedPwd := password.Encode(str, options)
|
||
newPassword := fmt.Sprintf("$pbkdf2-sha512$%s$%s", salt, encodedPwd)
|
||
return newPassword
|
||
}
|
||
|
||
func VerifyPassWord(passwd, EncodePasswd string) bool {
|
||
info := strings.Split(EncodePasswd, "$")
|
||
return password.Verify(passwd, info[2], info[3], options)
|
||
}
|
||
|
||
func Md5Encode(str string, isUpper bool) string {
|
||
sum := md5.Sum([]byte(str))
|
||
res := hex.EncodeToString(sum[:])
|
||
//转大写,strings.ToUpper(res)
|
||
if isUpper {
|
||
res = strings.ToUpper(res)
|
||
}
|
||
return res
|
||
}
|