# 平台侧构建code
# code概述
code
是用户登录态信息的加密表示,它以加密的JSON字符串格式存在。本指南将详细介绍如何构建和生成code
。
# 构建步骤
# 第一步:准备加密字符串
收集必要信息:
- userid(必填):平台用户的唯一标识符,需转换为字符串格式。只接受包含[a-zA-Z0-9]范围内的字符,最大长度为32位。
- isAnchor(可选):标识用户是否为主播。默认为"0"(非主播),如果用户是主播,则设置为"1"。
- clientIP(可选但建议填写):用户的真实IP地址,支持IPv4和IPv6格式。例如:"66.249.61.91"。某些道具的发放可能需要真实的用户IP。
构建JSON对象:将收集的信息以JSON格式表示。例如:
{
"userid": "user12345",
"isAnchor": "0",
"clientIP": "2001:0db8:86a3:08d3:1319:8a2e:0370:7344"
}
1
2
3
4
5
2
3
4
5
- 转换为字符串:确保JSON对象被转换为字符串形式,以便进行后续的加密操作。
# 第二步:加密处理
- AES-128-ECB加密:使用AES-128-ECB算法对上一步生成的JSON字符串进行加密。
- Base64编码:加密后的数据可能是二进制格式,需要对其进行Base64编码,以转换为可见的字符串形式。
# 加密数据规范
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userid | string | 是 | 平台用户ID,需为字符串格式,仅包含[a-zA-Z0-9]的字符,最长32位 |
isAnchor | string | 否 | 主播标识,默认为"0",主播则填"1" |
clientIP | string | 可选(推荐) | 真实用户IP,支持IPv4和IPv6,如:"66.249.61.91" |
# 示例代码
以下是一个Python示例代码,展示了如何构建和加密code
:
def _encrypt(data, password):
if isinstance(password, str):
password = password.encode('utf8')
bs = AES.block_size
pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs)
# AES-128-ECB加密
cipher = AES.new(password, AES.MODE_ECB)
data = cipher.encrypt(pad(data).encode('utf8'))
# Base64编码
encrypt_data = base64.b64encode(data)
return encrypt_data
def _get_code(user_id, seckey):
"""
构建并加密code。
:param user_id: 平台用户ID
:param is_anchor: 是否为主播,默认为0(非主播)
:param client_ip: 用户IP地址(可选)
:param secret_key: AES加密密钥,由livelink分配
:return: 加密后的code字符串
"""
# 构建JSON对象
login_info = {'userid': user_id, 'isAnchor': 0, 'clientIP': "2001:0db8:86a3:08d3:1319:8a2e:0370:7344"}
json_str = json.dumps(login_info)
# AES加密
ecb_data = _encrypt(json_str, seckey)
# _show_output(ecb_data, 'code加密完成')
return str(ecb_data, 'utf-8')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
注意:请确保你已经安装了pycryptodome库,可以通过pip install pycryptodome来安装。此外,密钥seckey
应由livelink分配,并且需要保持机密性。