在python中验证base64

时间:2018-03-20 01:40:36

标签: 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

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

1 个答案:

答案 0 :(得分:1)

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

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