这个Base64发生了什么?

时间:2015-06-15 12:43:19

标签: base64

我正在尝试将客户端发送到其会计系统上的特定帐户的URL。 URL格式为:

https://accountingsystem.com/Edit/CustomerEdit.aspx?CustomerId=MwA0ADEANQA4ADYAMgA=-MzQxNTg2Mg==

客户ID是3415862,当编码为Base64时,确实给了我MzQxNTg2Mg ==。但是,我不知道MwA0ADEANQA4ADYAMgA =来自哪里,或者如何计算它。令人困惑的是:

$ echo MwA0ADEANQA4ADYAMgA=-MzQxNTg2Mg== | base64 -D -d
<Info>: Read 34 bytes.
<Info>: Decoded to 14 bytes.
<Info>: Wrote 14 bytes.
3415862%

$ echo MwA0ADEANQA4ADYAMgA= | base64 -D -d
<Info>: Read 21 bytes.
<Info>: Decoded to 14 bytes.
<Info>: Wrote 14 bytes.
3415862%

$ echo MzQxNTg2Mg== | base64 -D -d
<Info>: Read 13 bytes.
<Info>: Decoded to 7 bytes.
<Info>: Wrote 7 bytes.
3415862%

有人能澄清这个难题吗?

期待中, Ĵ

1 个答案:

答案 0 :(得分:2)

有区别:

MwA0ADEANQA4ADYAMgA=解码为十六进制3300340031003500380036003200

MzQxNTg2Mg==解码为十六进制33343135383632

虽然两者都是字符串3415862,但区别在于第一个字符串是从UTF-16字符串编码而第二个字符串是从UTF-8或ASCII编码。

这就是说,我不知道为什么他们会将两种格式合并为一个值。也许他们只是使用' - '符号表示允许两种格式。