Python中固定长度的base64编码与解码

1 投票
1 回答
2064 浏览
提问于 2025-04-17 10:12

我正在尝试对一个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的具体内容有很好的介绍。

撰写回答