mirror of
https://github.com/xiaoqidun/idkey.git
synced 2025-07-12 22:01:47 +08:00
Compare commits
12 Commits
010073a6c0
...
v1.0.7
Author | SHA1 | Date | |
---|---|---|---|
4f84704da4 | |||
f894c870d4 | |||
a2cc489c96 | |||
61175b11c8 | |||
c8d79e8791 | |||
c88c500314 | |||
5f48988ade | |||
070f86013a | |||
c0ecb85a53 | |||
0eae46dfb5 | |||
87a2045616 | |||
4b6cac9d6f |
@ -1,4 +1,4 @@
|
||||
# idkey
|
||||
# idkey [](https://pkg.go.dev/github.com/xiaoqidun/idkey)
|
||||
Golang Argon2id 密码hash和验证
|
||||
# 安装方法
|
||||
go get -u github.com/xiaoqidun/idkey
|
||||
|
6
go.mod
6
go.mod
@ -1,5 +1,7 @@
|
||||
module github.com/xiaoqidun/idkey
|
||||
|
||||
go 1.15
|
||||
go 1.20
|
||||
|
||||
require golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de
|
||||
require golang.org/x/crypto v0.23.0
|
||||
|
||||
require golang.org/x/sys v0.20.0 // indirect
|
||||
|
12
go.sum
12
go.sum
@ -1,8 +1,4 @@
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig=
|
||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
|
||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
|
5
idkey.go
5
idkey.go
@ -10,12 +10,14 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Data 密文编码结构
|
||||
type Data struct {
|
||||
EncodeOptions // 加密选项
|
||||
Hash []byte // 密码密文
|
||||
Salt []byte // 加密盐值
|
||||
}
|
||||
|
||||
// EncodeOptions 密文编码选项
|
||||
type EncodeOptions struct {
|
||||
Time uint32 // 时间参数
|
||||
Memory uint32 // 内存参数
|
||||
@ -23,6 +25,7 @@ type EncodeOptions struct {
|
||||
KeyLen uint32 // 密文长度
|
||||
}
|
||||
|
||||
// Encode 将密码编码成密文
|
||||
func Encode(password []byte, options *EncodeOptions) string {
|
||||
salt := generateSalt(16)
|
||||
data := &Data{
|
||||
@ -58,6 +61,7 @@ func Encode(password []byte, options *EncodeOptions) string {
|
||||
)
|
||||
}
|
||||
|
||||
// Decode 获取密文编码结构
|
||||
func Decode(passwordHash string) (data *Data, err error) {
|
||||
data = &Data{}
|
||||
params := strings.Split(passwordHash, "$")
|
||||
@ -102,6 +106,7 @@ func Decode(passwordHash string) (data *Data, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// Verify 验证密码编码后是否等于密文
|
||||
func Verify(password []byte, passwordHash string) bool {
|
||||
data, err := Decode(passwordHash)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user