# 游戏侧构建code
# 构建步骤
为了在游戏侧构建code,请按照以下步骤操作:
# 1.准备加密内容:
- 构建一个包含必要信息的JSON对象。这些信息包括:gameOpenId, accType, gameNickName, headImg, area, platId, partition, areaName, platName, partitionName, roleId, roleName。
- 确保所有必须字段都已填写,并且数据的格式正确。
# 2.JSON转为字符串:
使用JSON库将构建好的JSON对象转换为字符串格式。
# 3.加密处理:
- 使用AES-128-ECB算法对上一步生成的JSON字符串进行加密。
- 加密完成后,对加密后的二进制数据进行Base64编码,以转换为可见的字符串形式。这是因为部分编程语言在使用AES加密后可能会返回二进制数据,需要通过Base64编码转换为可打印字符。
# 加密规范
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
gameOpenId | string | 是 | 玩家的游戏内OpenID |
accType | string | 是 | 玩家账号类型,如"qq"或"wx"(微信) |
gameNickName | string | 否 | 玩家在游戏内的昵称 |
headImg | string | 否 | 玩家的头像URL或标识 |
area | string | 是 | 玩家所在的游戏大区标识 |
platId | string | 对于手游必须 | 玩家使用的手机系统标识,如iOS或Android |
partition | string | 对于手游必须 | 玩家所在的游戏小区标识 |
platName | string | 否 | 手机系统的名称,如"iOS"或"Android" |
partitionName | string | 否 | 游戏小区的名称或描述 |
roleId | string | 是 | 玩家在游戏内的角色ID |
roleName | string | 否 | 玩家在游戏内的角色昵称,建议提供 |
# 示例
示例代码(Python版本):
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)
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_game_code(seckey):
"""
加密游戏角色信息以生成code。
:param seckey: 由livelink分配的加密密钥
:return: 加密后的code字符串
"""
# 示例角色信息
role_info = {
"gameOpenId": "example_game_open_id",
# ... 其他必要字段 ...
"roleName": "ExampleRoleName"
}
# 将角色信息转换为JSON字符串
json_str = json.dumps(role_info)
# AES加密
ecb_data = _encrypt(json_str, seckey)
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分配,并且需要保持机密性。在实际应用中,不要硬编码密钥或将其存储在不安全的地方。