跳转至

全球亚文化俱乐部联盟 技术文档 1:IC 卡存储流程说明

1. 先将以下数据存入到一个 MessagePack

- 研究员 GPC 编号(仅在转据点/转队/转俱乐部时才会发生变更,不可手动修改。在 GPC40 下,二进制形式,64 比特,也就是 8 字节;实际上当新版本 GPC 公布时,GPC 编号占用的字节数可能发生变化)

- GPC 版本(不可手动修改,仅当 GSCU 公布新版本 GPC 时才会发生变更。不超过 24 字节)

- 昵称(或者说"代号",可手动修改。不超过 120 字节)

- GSCU 电子钱包 GSD 余额(不可手动修改,仅在完成交易之后发生变更,以 u 为单位。用一个 16 字节(128 位)有符号整数表示。范围大约是-1.70x10^38 至 1.70x10^38 之间,若转换为 GSD,则是-1.70x10^32 GSD 至 1.70x10^32 GSD。1.70x10^32 GSD 非常巨大,若按 1 GSD = 1.5 USD,那就是 2.55x10^32 USD,相当于太阳价值的 0.2 倍至 8.4 倍)(太阳含有 1.47x10^30 kg 的氢(含 4.9x10^25 kg 氘)、4.94x10^29 kg 的氦(含 6.2x10^25 kg 氦-3)和 2.66x10^28 kg 重元素(O、C、Ne、Fe、Si、Mg、S、......),若按普通氢每千克 2 美元,氘每千克 12500 美元,普通氦每千克 50 美元,氘每千克 2000 万美元,重元素每千克 100 美元来算,总价值约为 1.27x10^33 美元,2.55x10^32 仅仅是它的 20%;若不算氘和氦-3,则总价值约为 3.03x10^31 美元,2.55x10^32 是它的 8.4 倍。)

- 简介(可手动修改。不超过 3000 字节)

- 扩展内容(分为 user(可手动修改,由研究员自行添加)和 system(不可手动修改,由系统提供)两类。仅受到 IC 卡内部 NOR 芯片(或者未来会用到的 FeRAM 芯片)的总容量限制。)

示例:

研究员 GPC 编号(code):LFN2018-00121376(8255201800121376)

GPC 版本(ver):GPC40

GSCU 电子钱包余额(balance):8293.666667 GSD(8293666667)

昵称(nickname):白雪公主

简介(intro):GSCU Wiki 创建者 | 现居福建厦门

扩展内容(extend):(例如:是否为 Wiki 管理员?)

得到以下 MessagePack(以下内容是为进行教学展示,对 extend 部分(扩展内容)进行了简化的,大多数情况下,未压缩的 MessagePack 有 512 字节至 8192 字节(压缩后可能会在 300 字节至 7000 字节之间)):
    86 a4 63 6f 64 65 c4 08 00 1d 54 0f f2 d8 6c 20

    a3 76 65 72 d9 05 47 50 43 34 30 a8 6e 69 63 6b

    6e 61 6d 65 d9 0c e7 99 bd e9 9b aa e5 85 ac e4

    b8 bb a7 62 61 6c 61 6e 63 65 c4 10 00 00 00 00

    00 00 00 00 00 00 00 01 ee 57 4f 6b a5 69 6e 74

    72 6f da 00 28 47 53 43 55 20 57 69 6b 69 20 e5 

    88 9b e5 bb ba e8 80 85 20 7c 20 e7 8e b0 e5 b1 

    85 e7 a6 8f e5 bb ba e5 8e a6 e9 97 a8 a6 65 78 

    74 65 6e 64 82 a4 75 73 65 72 de 00 00 a6 73 79

    73 74 65 6d de 00 01 aa 77 69 6b 69 5f 61 64 6d 

    69 6e c3

分析:

字节 内容 长度 说明
0x00 86 1 字节 6 个元素:"code"、"ver"、"nickname"、"balance"、"intro"、"extend"
0x01 a4 1 字节 接下来是 4 字节字符串
0x02-0x05 63 6f 64 65 4 字节 "code"
0x06-0x07 c4 08 2 字节 接下来是 8 字节二进制
0x08-0x0f 00 1d 54 0f f2 d8 6c 20 8 字节 GPC 编号(8255201800121376,也就是 LFN2018-00121376)
0x10 a3 1 字节 接下来是 3 字节字符串
0x11-0x13 76 65 72 3 字节 "ver"
0x14-0x15 d9 05 2 字节 接下来是 5 字节字符串
0x16-0x1a 47 50 43 34 30 5 字节 GPC 版本("GPC40")
0x1b a8 1 字节 接下来是 8 字节字符串
0x1c-0x23 6e 69 63 6b 6e 61 6d 65 8 字节 "nickname"
0x24-0x25 d9 0c 2 字节 接下来是 12 字节字符串
0x26-0x31 e7 99 bd e9 9b aa e5 85 ac e4 b8 bb 12 字节 昵称("白雪公主")
0x32 a7 1 字节 接下来是 7 字节字符串
0x33-0x39 62 61 6c 61 6e 63 65 7 字节 "balance"
0x3a-0x3b c4 10 2 字节 接下来是 16 字节二进制
0x3c-0x4b 00 00 00 00 00 00 00 00 00 00 00 01 ee 57 4f 6b 16 字节 GSCU 电子钱包 GSD 余额(例如给定内容为 8293666667,也就是 8293.666667 GSD)
0x4c a5 1 字节 接下来是 5 字节字符串
0x4d-0x51 69 6e 74 72 6f 5 字节 "intro"
0x52-0x54 da 00 28 3 字节 接下来是 40 字节字符串
0x55-0x7c 47 53 43 55 20 57 69 6b 69 20 e5 88 9b e5 bb ba e8 80 85 20 7c 20 e7 8e b0 e5 b1 85 e7 a6 8f e5 bb ba e5 8e a6 e9 97 a8 40 字节 简介(例如给定内容为"GSCU Wiki 创建者 | 现居福建厦门")
0x7d a6 1 字节 接下来是 6 字节字符串
0x7e-0x83 65 78 74 65 6e 64 6 字节 "extend"
0x84 82 1 字节 "extend"内 2 个元素:"user"和"system"
0x85 a4 1 字节 接下来是 4 字节字符串
0x86-0x89 75 73 65 72 4 字节 "user"
0x8a-0x8c de 00 00 3 字节 "user"内 0 个元素
- - 0 字节 (还没有任何内容)
0x8d a6 1 字节 接下来是 6 字节字符串
0x8e-0x93 73 79 73 74 65 6d 6 字节 "system"
0x94-0x96 de 00 01 3 字节 "system"内 1 个元素:"wiki_admin"
0x97 aa 1 字节 接下来是 10 字节字符串
0x98-0xa1 77 69 6b 69 5f 61 64 6d 69 6e 10 字节 "wiki_admin"
0xa2 c3 1 字节 TRUE

长度统计:

GPC 编号:8 字节

GPC 版本:5 字节

昵称:12 字节

余额数值:16 字节

简介:40 字节

扩展内容(user):0 字节

扩展内容(system):12 字节

框架内容:70 字节

总计:163 字节

2. 然后,压缩数据:以级别 9 的 GZIP,或者以 LZMA,对 MessagePack 进行压缩。当然,也可以跳过此步骤,直接进入加密步骤

3. 最后,通过 AES256 进行加密,存入 NOR 芯片(或者 FeRAM 芯片)