![](/img/trans.png)
[英]Python3 error trying to decode (base64) then decompress (gzip)
[英]How to decode base64 in python3
我有一个base64加密代码,并且无法在python3.5中解码
import base64
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA" # Unencrypt is 202cb962ac59075b964b07152d234b70
base64.b64decode(code)
结果:
binascii.Error: Incorrect padding
但是同一网站( base64decode )可以对其进行解码,
请任何人都可以告诉我原因,以及如何使用python3.5对其进行解码?
谢谢
Base64需要一个长度为4的倍数的字符串。如果字符串较短,则用1到3 =
填充。
import base64
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA="
base64.b64decode(code)
# b'admin:202cb962ac59075b964b07152d234b70'
根据此答案 ,您只需添加所需的填充即可。
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA"
b64_string = code
b64_string += "=" * ((4 - len(b64_string) % 4) % 4)
base64.b64decode(b64_string) #'admin:202cb962ac59075b964b07152d234b70'
我尝试了另一种方法。 如果您知道什么是未加密的值:
>>> import base64
>>> unencoded = b'202cb962ac59075b964b07152d234b70'
>>> encoded = base64.b64encode(unencoded)
>>> print(encoded)
b'MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA='
>>> decoded = base64.b64decode(encoded)
>>> print(decoded)
b'202cb962ac59075b964b07152d234b70'
现在,您将看到正确的填充。 b'MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA=
实际上,它似乎仅仅是因为code
不正确填充 ( code
是不完整)
import base64
code = "YWRtaW46MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA"
base64.b64decode(code+"=")
返回b'admin:202cb962ac59075b964b07152d234b70'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.