You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两个不同的Base64字符串解码后得到相同二进制数据?

为什么两个不同的Base64字符串解码后二进制数据完全相同?

这是Base64编码规则的特性导致的,具体原因如下:

  • Base64的核心逻辑是把每3字节二进制数据(共24位)转换成4个Base64字符(每个字符对应6位,4×6=24位)。如果原数据长度不是3的倍数,会在末尾补0凑成6位的整数倍,最后用=填充标记补位。
  • 你给出的两个字符串XCrgcAAAAAC82M==和XCrgcAAAAAC82A==,差异仅在倒数第二个非填充字符(M和A)。对应的原二进制数据是10字节(共80位),10字节 = 3×3 + 1,编码时:
    • 前9字节(72位)会转换成12个Base64字符,这部分两个字符串完全一致;
    • 剩下的1字节(8位)需要拆成两个Base64字符:第一个字符取这8位的前6位,第二个字符取后2位,再补4个0凑成完整的6位(因为Base64每个字符必须对应6位);
    • 最后补两个=填充,让总长度符合4的倍数要求。
  • 解码时,程序只会提取对应原数据的80位,第二个字符里补的4个0属于额外的填充位,不会被解析到最终的二进制数据中。而M对应的二进制是001100,A对应的是000000,它们的前2位都是00——正好对应原最后1字节的后2位,后面的4位不管是什么,解码时都会被丢弃。所以两个字符串解码后得到的二进制数据完全相同。

两个字符串的xxd解码输出一致:

00000000: 5c2a e070 0000 0000 bcd8                 \*.p......

内容的提问来源于stack exchange,提问作者Valentin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:02:17