这是一个示例代码,用于生成邀请URL并混淆参数:
package main
import (
"crypto/rand"
"crypto/sha256"
"encoding/hex"
"fmt"
)
func main() {
// 生成随机字节序列作为邀请码
inviteCode := make([]byte, 16)
rand.Read(inviteCode)
inviteCodeHex := hex.EncodeToString(inviteCode)
// 使用邀请码和当前时间戳计算签名
timestamp := uint32(1234567890) // 替换为当前时间戳
signingKey := "my-secret-key" // 替换为您自己的秘钥
signingData := fmt.Sprintf("%s:%d", inviteCodeHex, timestamp)
signature := hmacSHA256(signingData, signingKey)
// 将邀请码、时间戳和签名组合成一个URL
url := fmt.Sprintf("https://example.com/invite?code=%s×tamp=%d&sig=%s", inviteCodeHex, timestamp, signature)
fmt.Println("Invite URL:", url)
}
func hmacSHA256(data string, key string) string {
mac := hmac.New(sha256.New, []byte(key))
mac.Write([]byte(data))
return hex.EncodeToString(mac.Sum(nil))
}
这个示例代码使用 crypto/rand
包生成随机字节序列,然后使用 crypto/sha256
包计算 HMAC-SHA256 签名。最后,将邀请码、时间戳和签名组合成一个URL。
注意:在实际应用中,您需要使用真正的秘钥,而不是硬编码在代码中的字符串。您还应该根据自己的需求调整时间戳的生成方式。