复现双验签
This commit is contained in:
39
utils/auth/check_customer_password.go
Normal file
39
utils/auth/check_customer_password.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"crypto/sha1"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// sha1($customer['salt'] . md5($customer['salt'] . $password))
|
||||
func HashPassword(salt, password string) string {
|
||||
saltBytes := []byte(salt)
|
||||
passwordBytes := []byte(password)
|
||||
|
||||
// 计算 md5($customer['salt'] . $password)
|
||||
md5Hash := md5.Sum(append(saltBytes, passwordBytes...))
|
||||
|
||||
// 计算 $customer['salt'] . md5($customer['salt'] . $password)
|
||||
combined := append(saltBytes, []byte(fmt.Sprintf("%x", md5Hash))...)
|
||||
|
||||
// 计算 sha1($customer['salt'] . md5($customer['salt'] . $password))
|
||||
sha1Hash := sha1.Sum(combined)
|
||||
|
||||
return fmt.Sprintf("%x", sha1Hash)
|
||||
}
|
||||
|
||||
func CheckPassword(custPassword, salt, randomPassword string, password string) bool {
|
||||
|
||||
if custPassword == HashPassword(salt, password) {
|
||||
return true
|
||||
}
|
||||
|
||||
// 验证密码规则2
|
||||
if password == fmt.Sprintf("%x", sha1.Sum([]byte(randomPassword))) {
|
||||
return true
|
||||
}
|
||||
|
||||
// 如果两个条件都不满足,则返回false
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user