在python中验证base64



我想检查字符串是否是用python编码的base64。由于内置模块非常宽容,我尝试了以下方法

s = b'111='
b64encode(b64decode(s)) == s

令我惊讶的是,它返回了False。事实上,b64encode(b64decode(s))回报b'110='.我希望它会返回True,因为我的印象是'111='是一个有效的 base64 字符串。

我的 python 版本是 3.6.4

$ python --version
Python 3.6.4

这是为什么呢?有人可以解释一下吗?

由于"0"和"1"仅在最后4位不同(并且编码有4个填充位(,因此两者都是明文的有效编码。 但是,b64encode() 只会在那里使用"0"进行编码。

为了保持健壮性,您需要计算编码文本应该有多少填充位和字节,然后只比较有效字节和位。

最新更新