在python中验证base64

在python中验证base64,python,base64,Python,Base64,我想检查字符串是否是用python编码的base64。由于内置模块非常宽容,我尝试了以下方法 s = b'111=' b64encode(b64decode(s)) == s 令我惊讶的是,它返回了False。实际上,b64encode(b64decode))返回b'110='。我希望它返回True,因为我觉得'111='是一个有效的base64字符串 我的python版本是3.6.4 $ python --version Python 3.6.4 为什么会这样?有人能解释一下吗?因为“0”

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

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

我的python版本是3.6.4

$ python --version
Python 3.6.4
为什么会这样?有人能解释一下吗?

因为“0”和“1”都只在最后4位不同(编码有4个填充位),所以它们都是纯文本的有效编码<但是,code>b64encode()将仅在此处使用“0”进行编码

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