获取签名
1. 获取安全凭证
每个交易所集成时,LG 会分配一套安全参数,以确保交易所与 LG 之间的安全通讯。
1.1 参数说明
| 参数 | 用途 | 保密等级 | 存储要求 |
|---|---|---|---|
APP_ID | 应用标识 | 低 | 前端/服务端 |
APP_KEY | 接口鉴权 | 中 | 前端/服务端 |
APP_SECRET | 签名加密 | 高 | 仅服务端 |
APP_PASSPHRASE | 敏感操作验证 | 最高 | 加密存储于服务端 |
安全警告 APP_SECRET 和 APP_PASSPHRASE 必须严格保密,只能保存于服务器端,不可以对外公开,也不可以传递到任何前端页面。
1.2 获取方式
-
测试环境 联系技术支持获取临时凭证
-
生产环境 上线前,需正式获取凭证
2 服务端集成指南
2.1 用户标识加密算法
LG 交易 SDK 支持用户标识加密,以防止用户标识被截获。
用户标识加密算法为:AES-256-CBC,加密密钥为:APP_SECRET,加密向量:APP_PASSPHRASE。
1、首先通过哈希算法对 user_id 加密计算 UID
encrypted_user_id = sha1(user_id+salt)
2、再使用 LG 的双向加解密算法对 UID 再次进行加密计算 APP_UID
Bd1ZZ5VO98z8Gf/z39m6RjSxhdOV9nW+8+6j9j+ZV2OOfXWwyChSJ3+xzRZulDyi:OTg3NjVmZWRjYmE0MzIxMA==
完成以上操作后,前端页面中存在当前用户的唯一 ID,可以用于确定当前用户,但又不用担心被破解。黑客无法还原真实的 UID,更无法得到交易所用户表中最原始的 user_id。
const crypto = require("crypto");
const APP_KEY = "your_app_key";
const APP_ID = "your_app_id";
const APP_URL = "your_app_url";
const APP_SECRET = "your_app_secret";
const APP_PASSPHRASE = "your_app_passphrase";
const userId = "your_user_id"; // 如: "user_123"
const salt = ""; // 如: "salt_123"
const _encrypted = cryptoAes128Cbc(userId, APP_SECRET);
const _base64Iv = cryptoBaes64(salt);
const appUid = `${APP_PASSPHRASE}${_encrypted}:${_base64Iv}`;
const timestamp = Math.floor(new Date().getTime() / 1000);
const signature = crypto
.createHmac("sha256", APP_SECRET)
.update(`${timestamp}${APP_URL}`)
.digest("base64");
const data = {
timestamp: timestamp,
signature: signature,
"APP-KEY": APP_KEY,
"APP-ID": APP_ID,
"APP-URL": APP_URL,
"APP-UID": appUid,
APP_EMAIL: "[email protected]",
};
console.log(data);Updated 5 months ago
