请求体公钥加密,端到端安全传输
参数排序拼接 + APPKEY 防篡改
10 位时间戳 + Redis 5 分钟窗口
混合信封 AES-256-CBC 加密响应
每个 SDK 均包含完整的加密、签名与请求流程,可直接参考或用于生产
完整的 Go 语言客户端封装。基于 Client 结构体,内置 RSA 加密、MD5 签名、心跳维护等全部功能,开箱即用。
// Post 发送POST请求(自动加密+签名)
func (c *Client) Post(path string, params map[string]string) (map[string]interface{}, error) {
// 1. 添加时间戳
timestamp := fmt.Sprintf("%d", time.Now().Unix())
params["time"] = timestamp
// 2. 生成签名
sign := c.generateSign(params)
// 3. 将参数转为JSON并用RSA公钥加密
jsonBytes, _ := json.Marshal(params)
encrypted, err := rsa.EncryptPKCS1v15(
rand.Reader, c.pubKey, jsonBytes)
// 4. 设置请求头
req.Header.Set("Content-Type", "text/plain")
req.Header.Set("X-App-Id", c.AppID)
req.Header.Set("X-Timestamp", timestamp)
req.Header.Set("X-Sign", sign)
req.Header.Set("X-Encrypt", encryptedB64)
// ...
}
Python 工具函数集。包含签名、RSA 加密、请求构建和 AES-256-CBC 响应解密的完整实现,附带排查清单。
# 构造安全请求头
def build_headers(params, token=None, want_enc_resp=False):
ts = str(int(time.time()))
params = dict(params)
params["time"] = ts
sign = sign_params(params, APP_KEY)
x_encrypt = rsa_encrypt(json.dumps(params), PUB_PEM)
h = {
"X-App-Id": APP_ID,
"X-Timestamp": ts,
"X-Sign": sign,
"X-Encrypt": x_encrypt,
}
if token:
h["Authorization"] = f"Bearer {token}"
if want_enc_resp:
h["X-Resp-Enc"] = "1"
return h
最完整的接入文档,覆盖客户端全部接口和管理端接口。依赖精易模块和 E2EE 支持库,包含 RSA 加密、签名生成、响应解密等核心子程序。
.子程序 发送POST, 字节集
.参数 url, 文本型
.参数 params_json, 文本型
.局部变量 签名, 文本型
.局部变量 密文, 文本型
签名 = 生成签名 (params_json)
密文 = RSA_公钥加密 (params_json)
' 构建请求头
加入头部 ("X-App-Id: " + APP_ID)
加入头部 ("X-Timestamp: " + 到文本 (取时间戳 ()))
加入头部 ("X-Sign: " + 签名)
加入头部 ("X-Encrypt: " + 密文)
返回 HTTP_POST (url, 密文)
服务端 Webhook 回调接收器示例。支持注册、订单支付、会员过期、并发拒绝四种事件,内置 HMAC-SHA256 签名校验,确保回调安全。
// 校验 HMAC-SHA256 签名(防伪造)
if secret != "" {
mac := hmac.New(sha256.New, []byte(secret))
mac.Write(body)
expected := hex.EncodeToString(mac.Sum(nil))
if !hmac.Equal([]byte(expected),
[]byte(signature)) {
http.Error(w, "invalid signature", 403)
return
}
}
// 按事件类型分发业务逻辑
switch event {
case "register":
log.Printf("用户 %v 注册成功", data["uid"])
case "order_paid":
log.Printf("订单支付成功 order_no=%v",
data["order_no"])
}
基于标准 RESTful HTTP API,任何能发起 HTTP 请求的编程语言都可以接入幽游网络验证。核心安全机制均为标准算法实现。
X-Encrypt 请求头import time, json, hashlib, base64
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import serialization
APP_ID = "APP20240101ABCDEF"
APP_KEY = "你的APPKEY"
PUB_PEM = """-----BEGIN RSA PUBLIC KEY-----
<应用专属RSA公钥>
-----END RSA PUBLIC KEY-----"""
def sign_params(params, app_key):
keys = sorted(k for k in params
if k not in ("sign", "sign_type"))
raw = "&".join(f"{k}={params[k]}" for k in keys)
return hashlib.md5(
(raw + app_key).encode()).hexdigest()
def rsa_encrypt(plain_json, pub_pem):
pub = serialization.load_pem_public_key(
pub_pem.encode())
ct = pub.encrypt(
plain_json.encode(), padding.PKCS1v15())
return base64.b64encode(ct).decode()
def build_headers(params, token=None):
ts = str(int(time.time()))
params["time"] = ts
sign = sign_params(params, APP_KEY)
enc = rsa_encrypt(json.dumps(params), PUB_PEM)
return {
"X-App-Id": APP_ID,
"X-Timestamp": ts,
"X-Sign": sign,
"X-Encrypt": enc,
"Authorization": f"Bearer {token}" if token else "",
}