Python中固定长度的base64编码与解码
我正在尝试对一个base64字符串进行编码和解码。通常情况下,这个过程很顺利,但如果我试着把哈希限制为6位数字,就会在解码时出现错误:
from base64 import b64encode
from base64 import b64decode
s="something"
base64编码/解码:
# Encode:
hash = b64encode(s)
# Decode:
dehash = b64decode(hash)
print dehash
(正常工作)
6位数字的base64编码/解码:
# Encode:
hash = b64encode(s)[:6]
# Decode:
dehash = b64decode(hash)
print dehash
类型错误:填充不正确
我哪里做错了呢?
更新:
根据Mark的回答,我给6位数字的哈希添加了填充,使其可以被4整除:
hash = hash += "=="
但现在解码的结果是“some”
更新2
哇,真是太傻了……
1 个回答
4
Base64的定义是,如果输入的数据不能被转换成整数量的字节,就需要在输入数据后面加上填充。每4个Base64字符会变成3个字节。如果你的输入长度不能被4整除,就会出现错误。
维基百科上对Base64的具体内容有很好的介绍。