如何在python3中解码base64

时间:2016-07-31 11:23:01

标签: python base64

我有一个base64加密代码,我无法在python3.5中解码

import base64
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA" # Unencrypt is 202cb962ac59075b964b07152d234b70
base64.b64decode(code)

结果:

binascii.Error: Incorrect padding

但是同一个网站(base64decode)可以解码它,

请有人告诉我为什么,以及如何使用python3.5解码它?

由于

4 个答案:

答案 0 :(得分:23)

Base64需要一个长度为4的字符串。如果字符串很短,则用1到3 =填充。

import base64
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA="
base64.b64decode(code)
# b'admin:202cb962ac59075b964b07152d234b70'

答案 1 :(得分:1)

根据此answer,您只需添加所需的填充。

code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA"
b64_string = code
b64_string += "=" * ((4 - len(b64_string) % 4) % 4)
base64.b64decode(b64_string) #'admin:202cb962ac59075b964b07152d234b70'

答案 2 :(得分:0)

实际上似乎只是code不正确paddedcode不完整)

import base64
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA"
base64.b64decode(code+"=")

返回b'admin:202cb962ac59075b964b07152d234b70'

答案 3 :(得分:0)

我试着反过来。如果您知道未加密的值是什么:

>>> import base64
>>> unencoded = b'202cb962ac59075b964b07152d234b70'
>>> encoded = base64.b64encode(unencoded)
>>> print(encoded)
b'MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA='
>>> decoded = base64.b64decode(encoded)
>>> print(decoded)
b'202cb962ac59075b964b07152d234b70'

现在您看到正确的填充。 b'MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA=