后端团队需要提供一系列参数,在交易所页面加载Legend Gateway SDK时传入。
如上一篇文章介绍,这些参数为预先分配,或从分配的密钥及其他信息计算得到。
请联系技术支持团队分配这些参数。
如:
APP_ID
APP_KEY
APP_URL
APP_UID
signature
timestampLG提供了示例源代码,用于计算生成必要的参数。
电子签名signature
根据LG提供的加密算法代码,每次调用JSSDK前,计算一个电子签名signature,传递给前端。
用户UID
通过特定算法将交易所用户表的User ID(主键) 加密后,提供给Legend,作为在OTC平台的唯一用户标识。必须是每个用户唯一、不重复。此ID将被传递给嵌入的KYC和交易页面。
该ID长度最好不超过20字符。
交易所可以自行决定使用不可逆加密算法。
例如
encrypted_user_id = sha1(user_id+salt)
此ID不可以明文传递给JSSDK!
请使用LG提供的加密算法代码,再次加密,作为APP_UID传递给JSSDK。
Bd1ZZ5VO98z8Gf/z39m6RjSxhdOV9nW+8+6j9j+ZV2OOfXWwyChSJ3+xzRZulDyi:OTg3NjVmZWRjYmE0MzIxMA==以下示例:
假设交易所用户表结构如下:
| user_id | user_name |
|---|---|
| 1 | James Bond |
| 2 | Ethan Hunt |
假设我们要向LG传递第1个用户James Bond的信息。
第1步,我们对user_id(用户表主键)进行不可逆加密,这样可以确保每个用户的UID是唯一的。
UID = sha1(user_id+salt) (此处用salt来增加安全性)
salt = "sfdsfsXXDD23901" (random string)
UID = sha1(1+sfdsfsXXDD23901)
=sha1("1sfdsfsXXDD23901")
="42fa5da9de51f2caa39217c4b8bece42ff6029cf"第2步,我们用LG的双向加解密算法对UID再次进行加密,得到二次加密的UID,然后赋值给APP_UID,传递给前端页面。
LG提供了示例源代码。
String uid = "42fa5da9de51f2caa39217c4b8bece42ff6029cf";
System.out.println("Original UID: ");
System.out.println(uid);
String uidEncrypted = TBClient.encryptUID(uid);
System.out.println("Encrypted UID:");
System.out.println(uidEncrypted);
//系统输出
//Bd1ZZ5VO98z8Gf/z39m6RjSxhdOV9nW+8+6j9j+ZV2OOfXWwyChSJ3+xzRZulDyi:OTg3NjVmZWRjYmE0MzIxMA==
//此处计算结果为示例,并不准确
APP_UID= "Bd1ZZ5VO98z8Gf/z39m6RjSxhdOV9nW+8+6j9j+ZV2OOfXWwyChSJ3+xzRZulDyi:OTg3NjVmZWRjYmE0MzIxMA=="完成以上操作后,前端页面中存在当前用户的唯一ID,可以用于确定当前用户,但又不用担心被破解。黑客无法还原真实的UID,更无法得到交易所用户表中最原始的user_id。
