cycrypto

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const SIGN = "" /* 128-byte string literal not displayed */

Variables

View Source
var (
	PUB_VALUE = "Cyclone890123456"
	IV        = "1234567890123456"
)

Functions

func Base64Decode

func Base64Decode(v string) string

Base64Decode 将 Base64 编码的字符串解码。

参数:

  • v: Base64 编码的字符串

返回值:

  • string: 解码后的字符串

用法:

decoded := Base64Decode("aGVsbG8gd29ybGQ=")
// decoded = "hello world"

局限:

  • 解码失败时返回空字符串(错误被忽略)
  • 输入必须是有效的 Base64 字符串

func Base64Encode

func Base64Encode(v string) string

Base64Encode 将字符串进行 Base64 编码。

参数:

  • v: 需要编码的字符串

返回值:

  • string: Base64 编码后的字符串

用法:

encoded := Base64Encode("hello world")
// encoded = "aGVsbG8gd29ybGQ="

特点:

  • 使用标准 Base64 字母表
  • 输出包含填充字符 '='

局限:

  • 编码后长度会增加约 33%
  • 不适合加密,仅用于编码

func GenHMAC

func GenHMAC(data string, key string) string

GenHMAC 生成 HMAC-SHA1 签名。

参数:

  • data: 需要签名的数据
  • key: 签名密钥

返回值:

  • string: Base64 编码的签名

用法:

signature := GenHMAC("data to sign", "secret_key")
// signature = "base64encodedhmac"

特点:

  • 使用 HMAC-SHA1 算法
  • 返回 Base64 编码
  • 自动在密钥末尾添加 &

局限:

  • SHA1 已被认为不够安全
  • 仅用于兼容性维护

func GetSignature

func GetSignature(method, key string, queryParam map[string]string) string

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

func GetSignatureFromURL(method, key, url string) (string, error)

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

func HashInt(input string) uint32

HashInt 使用 Murmur3 算法计算字符串的哈希值。

参数:

  • input: 需要哈希的字符串

返回值:

  • uint32: 32 位无符号整数哈希值

用法:

hash := HashInt("test string")
// hash = 1234567890

特点:

  • 速度快
  • 分布均匀
  • 适合哈希表和布隆过滤器

局限:

  • 不适合密码存储
  • 返回值范围有限(32 位)

func JwtSign

func JwtSign(data *JwtData) (string, error)

JwtSign 签名并生成 JWT token,默认 7 天过期。

func JwtSignWithTTL

func JwtSignWithTTL(data *JwtData, ttl time.Duration) (string, error)

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

func NanoID(l ...int) string

NanoID 生成一个 Nano ID(短的、URL 友好的唯一 ID)。

参数:

  • l: 可选的长度参数,如果不提供则使用默认长度(21 字符)

返回值:

  • string: Nano ID 字符串

用法:

id := NanoID()           // 默认长度 21
id := NanoID(16)         // 自定义长度 16

特点:

  • 短小精悍
  • URL 友好(只使用 URL 安全字符)
  • 生成速度快
  • 可自定义长度

局限:

  • 长度越短,碰撞概率越高
  • 不可排序
  • 不包含时间戳信息

func ParseQueryToMap

func ParseQueryToMap(queryString string) (map[string]string, error)

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

func ParseURLParams(url string) (string, map[string]string, error)

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

func RealVal(encodeVal string) string

RealVal 解析 ENC(...) 格式的加密值。

参数:

  • encodeVal: 可能是 ENC(...) 格式的加密值或普通字符串

返回值:

  • string: 如果是 ENC(...) 格式则返回解密后的值,否则返回原值

用法:

value := RealVal("ENC(base64encodedciphertext)")
// value = "decrypted data"
value := RealVal("plain text")
// value = "plain text"

特点:

  • 自动识别 ENC(...) 格式
  • 不匹配格式时返回原值

局限:

  • 解密失败时返回空字符串
  • 仅支持 ENC(...) 格式

func SM4Decode2

func SM4Decode2(v string) string

SM4Decode2 使用预定义的密钥和 IV 解密 SM4 加密的数据。

参数:

  • v: Base64 编码的 SM4 加密数据

返回值:

  • string: 解密后的字符串

用法:

encrypted := "base64encodedciphertext"
decrypted := SM4Decode2(encrypted)
// decrypted = "original data"

特点:

  • 使用固定的密钥和 IV
  • 自动处理 Base64 解码

局限:

  • 使用硬编码的密钥和 IV(安全性低)
  • 解密失败时返回空字符串
  • 仅用于兼容性维护,不推荐新项目使用

func SM4Decrypt2

func SM4Decrypt2(key, iv, cipherText []byte) ([]byte, error)

func SnowflakeID

func SnowflakeID() string

SnowflakeID 生成一个 Snowflake ID(分布式系统中的唯一 ID)。

返回值:

  • string: Snowflake ID 字符串(数字形式)

用法:

id := SnowflakeID()
// id = "1234567890123456789"

特点:

  • 分布式系统友好
  • 可排序(按时间顺序)
  • 包含时间戳、机器 ID、序列号
  • 高效率(可生成百万级 ID/秒)

局限:

  • 依赖系统时间和机器 ID
  • 长度较长(19 字符)
  • 生成失败时返回空字符串
  • 需要在分布式系统中配置机器 ID

func SortParam

func SortParam(method string, params map[string]string) string

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 参数

局限:

  • 不支持数组参数

func UUID

func UUID() string

UUID 生成一个 RFC 4122 标准的 UUID(通用唯一标识符)。

返回值:

  • string: UUID 字符串,格式为 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

用法:

id := UUID()
// id = "550e8400-e29b-41d4-a716-446655440000"

特点:

  • 全局唯一性强
  • 生成速度快
  • 标准格式,易于跨系统使用

局限:

  • 长度较长(36 字符)
  • 不可排序
  • 随机生成,无序列性

func XID

func XID() string

XID 生成一个 XID(全局唯一、可排序的 ID)。

返回值:

  • string: XID 字符串,长度为 20 字符

用法:

id := XID()
// id = "c0bnxqbovt8g6d4p0000"

特点:

  • 全局唯一
  • 可排序(按时间顺序)
  • 长度较短(20 字符)
  • 包含时间戳信息

局限:

  • 不如 UUID 标准化
  • 依赖系统时间

Types

type JwtClaim

type JwtClaim struct {
	Data map[string]interface{} `json:"data"`
	jwt.StandardClaims
}

type JwtData

type JwtData struct {
	Jti  string `json:"jti"`
	Sub  string `json:"sub"`
	Auth string `json:"auth"`
	Exp  int64  `json:"exp"`
}

func GetJwtVal

func GetJwtVal(token string) (*JwtData, error)

GetJwtVal 解析 JWT token 并提取数据。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL