我试图对base64字符串进行编码和解码。它通常工作正常,但如果我尝试将哈希限制为6位数,我在解码时会出错:
from base64 import b64encode
from base64 import b64decode
s="something"
# Encode:
hash = b64encode(s)
# Decode:
dehash = b64decode(hash)
print dehash
(作品)
# Encode:
hash = b64encode(s)[:6]
# Decode:
dehash = b64decode(hash)
print dehash
TypeError:填充不正确
我做错了什么?
更新
根据Mark的回答,我将填充添加到6位哈希,使其可以被4整除:
hash = hash += "=="
但现在解码结果="一些"
更新2
哇,这太蠢了..答案 0 :(得分:4)
如果Base64没有在输出上解码为整数个字节,则根据定义需要在输入上填充。每4个base64字符变为3个字节。您的输入长度不均匀地除以4,因此出现错误。
Wikipedia很好地描述了Base64的细节。