增加time的函数,crypto的函数
This commit is contained in:
85
tools/crypto.go
Normal file
85
tools/crypto.go
Normal file
@@ -0,0 +1,85 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"crypto/rand"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"math/big"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
// HashPassword 使用bcrypt加密密码
|
||||
func HashPassword(password string) (string, error) {
|
||||
bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
||||
return string(bytes), err
|
||||
}
|
||||
|
||||
// CheckPassword 验证密码
|
||||
func CheckPassword(password, hash string) bool {
|
||||
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// MD5 计算MD5哈希值
|
||||
func MD5(text string) string {
|
||||
hash := md5.Sum([]byte(text))
|
||||
return hex.EncodeToString(hash[:])
|
||||
}
|
||||
|
||||
// SHA256 计算SHA256哈希值
|
||||
func SHA256(text string) string {
|
||||
hash := sha256.Sum256([]byte(text))
|
||||
return hex.EncodeToString(hash[:])
|
||||
}
|
||||
|
||||
// GenerateRandomString 生成指定长度的随机字符串
|
||||
func GenerateRandomString(length int) string {
|
||||
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
b := make([]byte, length)
|
||||
for i := range b {
|
||||
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
|
||||
b[i] = charset[num.Int64()]
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
// GenerateRandomNumber 生成指定长度的随机数字字符串
|
||||
func GenerateRandomNumber(length int) string {
|
||||
const charset = "0123456789"
|
||||
b := make([]byte, length)
|
||||
for i := range b {
|
||||
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
|
||||
b[i] = charset[num.Int64()]
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
// GenerateSMSCode 生成短信验证码
|
||||
func GenerateSMSCode() string {
|
||||
return GenerateRandomNumber(6)
|
||||
}
|
||||
|
||||
// GenerateOrderNo 生成订单号
|
||||
func GenerateOrderNo(prefix string) string {
|
||||
timestamp := GetTimestamp()
|
||||
random := GenerateRandomNumber(6)
|
||||
return fmt.Sprintf("%s%d%s", prefix, timestamp, random)
|
||||
}
|
||||
|
||||
// GeneratePaymentNo 生成支付单号
|
||||
func GeneratePaymentNo() string {
|
||||
return GenerateOrderNo("PAY")
|
||||
}
|
||||
|
||||
// GenerateRefundNo 生成退款单号
|
||||
func GenerateRefundNo() string {
|
||||
return GenerateOrderNo("RF")
|
||||
}
|
||||
|
||||
// GenerateTransferNo 生成调拨单号
|
||||
func GenerateTransferNo() string {
|
||||
return GenerateOrderNo("TF")
|
||||
}
|
||||
Reference in New Issue
Block a user