web-dev-qa-db-ja.com

Python3でbase64をデコードする方法

Base64暗号化コードがあり、python3.5でデコードできません

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

結果:

binascii.Error: Incorrect padding

ただし、同じWebサイト( base64decode )はそれをデコードできますが、

誰が私にそれをデコードし、python3.5を使用してそれをデコードする方法を教えてください?

ありがとう

13
Tspm1eca

Base64には、4の倍数の長さの文字列が必要です。文字列が短い場合、1〜3 =

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

answer に従って、必要なパディングを追加するだけです。

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

私は他の方法を試しました。暗号化されていない値が何であるかを知っている場合:

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

これで正しいパディングが表示されます。 b'MjAyY2I5NjJhYzU5MDc1Yjk2NGIwNzE1MmQyMzRiNzA=

0
user2853437

実際には、単にcodeが間違っているようです paddedcodeは不完全です)

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

b'admin:202cb962ac59075b964b07152d234b70'を返します

0
janbrohl