固定数字base64在Python中编码和解码

时间:2012-01-13 20:32:38

标签: python base64

我试图对base64字符串进行编码和解码。它通常工作正常,但如果我尝试将哈希限制为6位数,我在解码时会出错:

from base64 import b64encode
from base64 import b64decode

s="something"

base 64编码/解码:

# Encode:
hash = b64encode(s)
# Decode:
dehash = b64decode(hash)
print dehash

(作品)

6位数字64位编码/解码:

# Encode:
hash = b64encode(s)[:6]
# Decode:
dehash = b64decode(hash)
print dehash

TypeError:填充不正确

我做错了什么?


更新

根据Mark的回答,我将填充添加到6位哈希,使其可以被4整除:

hash = hash += "=="

但现在解码结果="一些"

更新2

哇,这太蠢了..

1 个答案:

答案 0 :(得分:4)

如果Base64没有在输出上解码为整数个字节,则根据定义需要在输入上填充。每4个base64字符变为3个字节。您的输入长度不均匀地除以4,因此出现错误。

Wikipedia很好地描述了Base64的细节。