Appearance
认证授权
本章节详细介绍了平台的认证机制、签名算法以及参数加密方式,确保API通信的安全性。
🛠️ 接口必需参数
所有接入平台API的接口均须包含以下参数:
| 参数 | 说明 | 示例 |
|---|---|---|
agent | 代理编号 | 10001 |
param | 参数加密字符串 | Zhm1p0RRzzI+3SFURqryL8... |
timestamp | 时间戳 | 1736751734 |
key | MD5 校验字符串 | 7295a7d851243e8af3c8439db44ceba0 |
🔐 签名算法与示例
📊 参数加密
需要加密的参数示例:
| 参数 | 说明 | 范例 |
|---|---|---|
s | 操作子类型 | 0 |
account | 玩家账号 | 111111 |
money | 金额 (转帐钱包模式上分用,单一钱包模式无效) | 100 |
orderid | 流水号 | 10001202501130000001111111 |
ip | 客户端请求IP | 127.0.0.1 |
lineCode | 站点识别码 (选填) | line01 |
KindID | 游戏ID | 1 |
currency | 币别 | CNY |
🔒 AES 加密流程
1. 以Query String组成待加密字符串
将参数按照以下格式组成字符串:
s=0&account=111111&money=100&orderid=10001202501130000001111111&ip=127.0.0.1&lineCode=line01&KindID=1¤cy=CNY2. 使用 AES-128-ECB 进行加密
💡 AES 加密实现
平台使用 AES-128-ECB 模式进行参数加密,密钥由平台提供
使用示例
javascript
const crypto = require('crypto');
function aesEncrypt(param, desKey) {
let cipherChunks = [];
let cipher = crypto.createCipheriv('aes-128-ecb', desKey, '');
cipher.setAutoPadding(true);
cipherChunks.push(cipher.update(param, 'utf8', 'base64'));
cipherChunks.push(cipher.final('base64'));
return cipherChunks.join('');
}
// DESKey (平台提供)
const desKey = '9DA9A418752C85C7';
const paramString = 's=0&account=111111&money=100&orderid=10001202501130000001111111&ip=127.0.0.1&lineCode=line01&KindID=1¤cy=CNY';
const encryptedParam = aesEncrypt(paramString, desKey);
console.log(encryptedParam);3. 加密结果
Zhm1p0RRzzI+3SFURqryL819/70k20+XhLINyQ9flnH0kkHIDjfvn7tq1kh0jNN6MPYrW783Ae5tJ2rxpBdW/a3RUfO8G42eMfPgvt3muH85OAjw3acClpGoYWl/8qQ4Y1g1DGhOq9JDa1dNytrqh7I4uhv/Ki/AzntyT1o3lxI=🔐 MD5 校验
1. 组成待加密字符串
将以下参数组合:
agent + timestamp + MD5Key2. MD5 加密实现
javascript
const crypto = require('crypto');
function md5Encrypt(agent, timestamp, md5Key) {
const concatenated = agent + timestamp + md5Key;
const hash = crypto
.createHash('md5')
.update(concatenated)
.digest('hex');
return hash;
}
// MD5Key (平台提供)
const md5Key = '405B856329C9D8YB';
// 使用示例
const agent = '10001';
const timestamp = '1736751734';
const keyHash = md5Encrypt(agent, timestamp, md5Key);
console.log(keyHash);3. 加密示例
输入: 100011736751734405B856329C9D8YB
输出: ec9b5d714ab75cbe2dd7e15ae7443139
🔧 完整流程
步骤说明
1
准备接口参数
准备请求接口所需的业务参数
2
组成参数字符串
按照 Query String格式组成字符串
3
AES 加密
进行 AES-128-ECB 加密
4
生成 MD5 校验
使用 agent + timestamp + MD5Key 生成校验码
5
发送请求
包含 agent、param、timestamp、key 四个参数
🔍 注意事项
🔒 安全提醒
- 保护密钥:AESKey 和 MD5Key 密钥应妥善保管,避免泄露
- 使用 HTTPS:所有 API 请求必须使用 HTTPS 协议
- IP 白名单:配置 IP 白名单,限制请求来源
- 日志记录:记录认证失败的请求,便于排查问题和安全监控
