1.MD5加密方式
1)MD5包:"crypto/md5"
2)实现
func genMd5(code string) string{
//c1 := md5.Sum([]byte(code)) //返回[16]byte数组
Md5 := md5.New()
_, _ = io.WriteString(Md5, code)
return hex.EncodeToString(Md5.Sum(nil))
}
2. MD5盐值加密
我们可以使用github上别人写好的一个库:https://github.com/anaskhan96/go-password-encoder
1)导入包:
go get github.com/anaskhan96/go-password-encoder
2)具体使用方式:
package main
import (
"crypto/md5"
"fmt"
"github.com/anaskhan96/go-password-encoder"
)
func main() {
// 方式一:使用默认选项
salt, encodedPwd := password.Encode("generic password", nil)
check := password.Verify("generic password", salt, encodedPwd, nil)
fmt.Println(check) // true
// 方式二:使用自定义选项
options := &password.Options{10, 10000, 50, md5.New}
salt, encodedPwd = password.Encode("generic password", options)
check = password.Verify("generic password", salt, encodedPwd, options)
fmt.Println(check) // true
}
该Options
结构用于启用自定义选项:
type Options struct {
SaltLen int
Iterations int
KeyLen int
HashFunction func() hash.Hash
}
SaltLen:
用户生成的长度,默认256- Iterations: PBKDF2函数中的迭代次数,默认10000
- KeyLen:BKDF2函数中编码密钥的长度,默认512
- HashFunction: 使用的哈希算法,默认sha512