-
Notifications
You must be signed in to change notification settings - Fork 0
/
md5.go
31 lines (27 loc) · 921 Bytes
/
md5.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package pwd
import (
"fmt"
"github.com/palp1tate/go-crypto-guard"
)
func GenMd5(password string, saltLength, keyLength, iterations int) (encryptedPassword string, err error) {
password, saltLength, keyLength, iterations, err = pwd.ParseParameters(password, saltLength, keyLength, iterations)
if err != nil {
return
}
salt, err := pwd.GenerateSalt(saltLength)
if err != nil {
return
}
dk := pwd.GeneratePBKDF2(password, salt, iterations, keyLength, pwd.HashMap[pwd.Md5])
encryptedPassword = fmt.Sprintf("%s$%d$%s$%s", pwd.Md5, iterations, salt, pwd.Encode2string(dk))
return
}
func VerifyMd5(password, encryptedPassword string) (isValid bool, err error) {
_, iter, salt, storedHash, err := pwd.ParsePassword(encryptedPassword)
if err != nil {
return
}
dk := pwd.GeneratePBKDF2(password, salt, iter, len(storedHash)/2, pwd.HashMap[pwd.Md5])
isValid = storedHash == pwd.Encode2string(dk)
return
}