【问题标题】:Need help to decode a Base64 string需要帮助来解码 Base64 字符串
【发布时间】:2021-07-22 08:55:36
【问题描述】:

我正在尝试解码在线游戏中生成的这个 Base64 字符串,但我无法理解它。这是来自一个在线游戏,您可以在游戏中为您的角色提供不同的服装/风格。你可以选择你的颜色、坐骑和穿什么类型的衣服。然后,您可以选择保存整个装备(外观、颜色等),它会变成 Base64 字符串,并将其保存为本地计算机上的 JSON 文件。但我感兴趣的是阅读这个 Base64 字符串。

pGVtb3VudKJlY29sb3KkZmRldGFpbABkaGVhZABkbGVncwBldG9yc28AYmlkAGRuYW1lYGZvdXRmaXSkZWNvbG9ypGZkZXRhaWwYfGRoZWFkAGRsZWdzGHJldG9yc28YX2pmaXJzdEFkZE9u9GJpZBiBa3NlY29uZEFkZE9u9GZzdW1tb26hYmlkAA P>

我正在玩的游戏将其保存为 JSON 文件。上面的代码被转换成这个,存储在本地保存文件中。

{
"mount": {
    "color": {
        "detail": 0,
        "head": 0,
        "legs": 0,
        "torso": 0
        },
    "id": 0
    },
        "name": "Example",
        "outfit": {"color": {
        "detail": 124,
        "head": 0,
        "legs": 114,
        "torso": 95
    },
        "firstAddOn": false,
        "id": 129,
        "secondAddOn": false
    },
    "summon": {
    "id": 0
}

}

但我正在尝试解码实际的 Base64 字符串并从那里获取它的值。我得到的只是这个:

emountecolorfdetail.dhead.dlegs.etorso.bid.dname`foutfitecolorfdetail|dhead.dlegsretorso_jfirstAddOnbidksecondAddOnfsummonbid.

至少我可以看到一些值。

mount: e
color: f
detail: �d
head: �d
legs: �e
torso: �b

等等……

但是查看保存的文件,值应该是数字。这就是我想要得到的。变量的值。

【问题讨论】:

  • 我不能完全回答这个问题,但至少有一些提示:将 base64 代码解码为十六进制(例如 node.js 中的console.log(Buffer.from(b64, "base64").toString("hex")))然后你可以看到真正的字节值而不是一些奇怪的人物。例如,有一个序列“64 65 74 61 69 6c 18 7c 64”,即“d e t a i l | d”,基本上是ASCII码,但7c,打印为'|'是值 124。
  • 似乎他们使用某种二进制 JSON 编码而不是原始 JSON 格式。有多种选择,BSON 就是一个例子。

标签: json base64 decode


【解决方案1】:

您的编码字符串似乎存在一些问题(可能包含 ASCII/Unicode 字符),但通常,atob 可用于解码 Base64 字符串。 您也可以尝试其他方式,尝试使用 JSON.stringify() 将 JSON 转换为字符串并使用 btoa 进行编码

在这里参考第一个答案 - Using Javascript's atob to decode base64 doesn't properly decode utf-8 strings

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多