Documentation
¶
Index ¶
- Constants
- Variables
- func Base64Decode(v string) string
- func Base64Encode(v string) string
- func GenHMAC(data string, key string) string
- func GetSignature(method, key string, queryParam map[string]string) string
- func GetSignatureFromURL(method, key, url string) (string, error)
- func HashInt(input string) uint32
- func JwtSign(data *JwtData) (string, error)
- func JwtSignWithTTL(data *JwtData, ttl time.Duration) (string, error)
- func MD5(params ...interface{}) string
- func Md5Concat(params ...interface{}) string
- func NanoID(l ...int) string
- func ParseQueryToMap(queryString string) (map[string]string, error)
- func ParseURLParams(url string) (string, map[string]string, error)
- func RealVal(encodeVal string) string
- func SM4Decode2(v string) string
- func SM4Decrypt2(key, iv, cipherText []byte) ([]byte, error)
- func SnowflakeID() string
- func SortParam(method string, params map[string]string) string
- func UUID() string
- func XID() string
- type JwtClaim
- type JwtData
Constants ¶
const SIGN = "" /* 128-byte string literal not displayed */
Variables ¶
var ( PUB_VALUE = "Cyclone890123456" IV = "1234567890123456" )
Functions ¶
func Base64Decode ¶
Base64Decode 将 Base64 编码的字符串解码。
参数:
- v: Base64 编码的字符串
返回值:
- string: 解码后的字符串
用法:
decoded := Base64Decode("aGVsbG8gd29ybGQ=")
// decoded = "hello world"
局限:
- 解码失败时返回空字符串(错误被忽略)
- 输入必须是有效的 Base64 字符串
func Base64Encode ¶
Base64Encode 将字符串进行 Base64 编码。
参数:
- v: 需要编码的字符串
返回值:
- string: Base64 编码后的字符串
用法:
encoded := Base64Encode("hello world")
// encoded = "aGVsbG8gd29ybGQ="
特点:
- 使用标准 Base64 字母表
- 输出包含填充字符 '='
局限:
- 编码后长度会增加约 33%
- 不适合加密,仅用于编码
func GenHMAC ¶
GenHMAC 生成 HMAC-SHA1 签名。
参数:
- data: 需要签名的数据
- key: 签名密钥
返回值:
- string: Base64 编码的签名
用法:
signature := GenHMAC("data to sign", "secret_key")
// signature = "base64encodedhmac"
特点:
- 使用 HMAC-SHA1 算法
- 返回 Base64 编码
- 自动在密钥末尾添加 &
局限:
- SHA1 已被认为不够安全
- 仅用于兼容性维护
func GetSignature ¶
GetSignature 生成 API 请求的签名。
参数:
- method: HTTP 方法(GET、POST 等)
- key: 签名密钥
- queryParam: 查询参数 Map
返回值:
- string: Base64 编码的签名
用法:
params := map[string]string{"name": "John", "age": "30"}
signature := GetSignature("GET", "secret_key", params)
特点:
- 组合 SortParam 和 GenHMAC
- 参数自动排序
- 支持多种 HTTP 方法
局限:
- 使用 HMAC-SHA1(不够安全)
func GetSignatureFromURL ¶
GetSignatureFromURL 从 URL 生成签名。
参数:
- method: HTTP 方法(GET、POST 等)
- key: 签名密钥
- url: 完整 URL(包含查询参数)
返回值:
- string: Base64 编码的签名
- error: 如果 URL 格式无效返回错误
用法:
url := "https://api.example.com/users?name=John&age=30"
signature, err := GetSignatureFromURL("GET", "secret_key", url)
if err != nil {
log.Fatal(err)
}
局限:
- URL 必须包含 ? 和查询参数
- 不支持 URL 编码的参数
func HashInt ¶
HashInt 使用 Murmur3 算法计算字符串的哈希值。
参数:
- input: 需要哈希的字符串
返回值:
- uint32: 32 位无符号整数哈希值
用法:
hash := HashInt("test string")
// hash = 1234567890
特点:
- 速度快
- 分布均匀
- 适合哈希表和布隆过滤器
局限:
- 不适合密码存储
- 返回值范围有限(32 位)
func JwtSignWithTTL ¶
JwtSignWithTTL 使用自定义 TTL 签名并生成 JWT token。
func MD5 ¶
func MD5(params ...interface{}) string
MD5 计算参数的 MD5 哈希值。
参数:
- params: 可变参数,会被转换为字符串后计算哈希
返回值:
- string: 32 位十六进制 MD5 哈希值
用法:
hash := MD5("hello world")
// hash = "5eb63bbbe01eeed093cb22bb8f5acdc3"
hash := MD5("user", "123", "salt")
局限:
- MD5 已被认为不安全,不应用于密码存储
- 仅适合非安全场景(如数据完整性检查)
- 所有参数会被转换为字符串后拼接
func Md5Concat ¶
func Md5Concat(params ...interface{}) string
Md5Concat 模拟Java的MD5.create().digestHex()行为 将多个参数直接拼接成字符串后计算MD5
func NanoID ¶
NanoID 生成一个 Nano ID(短的、URL 友好的唯一 ID)。
参数:
- l: 可选的长度参数,如果不提供则使用默认长度(21 字符)
返回值:
- string: Nano ID 字符串
用法:
id := NanoID() // 默认长度 21 id := NanoID(16) // 自定义长度 16
特点:
- 短小精悍
- URL 友好(只使用 URL 安全字符)
- 生成速度快
- 可自定义长度
局限:
- 长度越短,碰撞概率越高
- 不可排序
- 不包含时间戳信息
func ParseQueryToMap ¶
ParseQueryToMap 将查询字符串解析为 Map。
参数:
- queryString: 查询字符串(可选包含前导 ?)
返回值:
- map[string]string: 参数 Map
- error: 总是返回 nil
用法:
params, _ := ParseQueryToMap("name=John&age=30")
// params = map[string]string{"name": "John", "age": "30"}
params, _ := ParseQueryToMap("?name=John&age=30")
// 自动移除前导 ?
局限:
- 不进行 URL 解码
- 不支持重复参数
func ParseURLParams ¶
ParseURLParams 解析 URL 并提取基础 URL 和参数。
参数:
- url: 完整 URL(包含查询参数)
返回值:
- string: 基础 URL(不包含查询参数)
- map[string]string: 查询参数 Map
- error: 如果 URL 格式无效返回错误
用法:
url := "https://api.example.com/users?name=John&age=30"
baseURL, params, err := ParseURLParams(url)
if err != nil {
log.Fatal(err)
}
// baseURL = "https://api.example.com/users"
// params = map[string]string{"name": "John", "age": "30"}
局限:
- URL 必须包含 ? 和查询参数
- 不进行 URL 解码
func RealVal ¶
RealVal 解析 ENC(...) 格式的加密值。
参数:
- encodeVal: 可能是 ENC(...) 格式的加密值或普通字符串
返回值:
- string: 如果是 ENC(...) 格式则返回解密后的值,否则返回原值
用法:
value := RealVal("ENC(base64encodedciphertext)")
// value = "decrypted data"
value := RealVal("plain text")
// value = "plain text"
特点:
- 自动识别 ENC(...) 格式
- 不匹配格式时返回原值
局限:
- 解密失败时返回空字符串
- 仅支持 ENC(...) 格式
func SM4Decode2 ¶
SM4Decode2 使用预定义的密钥和 IV 解密 SM4 加密的数据。
参数:
- v: Base64 编码的 SM4 加密数据
返回值:
- string: 解密后的字符串
用法:
encrypted := "base64encodedciphertext" decrypted := SM4Decode2(encrypted) // decrypted = "original data"
特点:
- 使用固定的密钥和 IV
- 自动处理 Base64 解码
局限:
- 使用硬编码的密钥和 IV(安全性低)
- 解密失败时返回空字符串
- 仅用于兼容性维护,不推荐新项目使用
func SM4Decrypt2 ¶
func SnowflakeID ¶
func SnowflakeID() string
SnowflakeID 生成一个 Snowflake ID(分布式系统中的唯一 ID)。
返回值:
- string: Snowflake ID 字符串(数字形式)
用法:
id := SnowflakeID() // id = "1234567890123456789"
特点:
- 分布式系统友好
- 可排序(按时间顺序)
- 包含时间戳、机器 ID、序列号
- 高效率(可生成百万级 ID/秒)
局限:
- 依赖系统时间和机器 ID
- 长度较长(19 字符)
- 生成失败时返回空字符串
- 需要在分布式系统中配置机器 ID
func SortParam ¶
SortParam 创建规范化的参数字符串用于签名。
参数:
- method: HTTP 方法(GET、POST 等)
- params: 参数 Map
返回值:
- string: 规范化的参数字符串,格式为 "METHOD&%2F&key1%3Dvalue1%26key2%3Dvalue2..."
用法:
params := map[string]string{"name": "John", "age": "30"}
sorted := SortParam("GET", params)
// sorted = "GET&%2F&age%3D30%26name%3DJohn"
特点:
- 参数按字母顺序排序
- 使用 RFC3986 编码
- 自动跳过 signature 参数
局限:
- 不支持数组参数
Types ¶
type JwtClaim ¶
type JwtClaim struct {
Data map[string]interface{} `json:"data"`
jwt.StandardClaims
}