36 lines
969 B
Go
36 lines
969 B
Go
package config
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
"encoding/hex"
|
|
)
|
|
|
|
// GenerateRandomString 生成加密安全的随机字符串
|
|
func GenerateRandomString(length int) string {
|
|
bytes := make([]byte, length)
|
|
if _, err := rand.Read(bytes); err != nil {
|
|
panic("failed to generate random string: " + err.Error())
|
|
}
|
|
return hex.EncodeToString(bytes)
|
|
}
|
|
|
|
// GenerateRandomBase64 生成 Base64 编码的随机字符串
|
|
func GenerateRandomBase64(length int) string {
|
|
bytes := make([]byte, length)
|
|
if _, err := rand.Read(bytes); err != nil {
|
|
panic("failed to generate random string: " + err.Error())
|
|
}
|
|
return base64.URLEncoding.EncodeToString(bytes)
|
|
}
|
|
|
|
// GenerateSessionSecret 生成会话密钥
|
|
func GenerateSessionSecret() string {
|
|
return GenerateRandomString(32) // 64 个十六进制字符
|
|
}
|
|
|
|
// GenerateCSRFToken 生成 CSRF 令牌
|
|
func GenerateCSRFToken() string {
|
|
return GenerateRandomBase64(32)
|
|
}
|