# 游戏侧构建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

注意:请确保已经安装了pycryptodome库,可以通过pip install pycryptodome来安装。此外,密钥seckey应由livelink分配,并且需要保持机密性。在实际应用中,不要硬编码密钥或将其存储在不安全的地方。

lastUpdate: 10/14/2024, 10:33:57 AM