python binascii.Error: Incorrect padding

  • 在有些字符串base64解碼的時候可能會報錯 Incorrect padding報錯如下:
Traceback (most recent call last):
  File "/home/zzq/software/pycharm-2017.2.7/helpers/pydev/pydevd.py", line 1599, in <module>
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/home/zzq/software/pycharm-2017.2.7/helpers/pydev/pydevd.py", line 1026, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/home/zzq/software/pycharm-2017.2.7/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/home/zzq/work/self/public-script/generic/ssr_update.py", line 156, in <module>
    ssr_account3()
  File "/home/zzq/work/self/public-script/generic/ssr_update.py", line 146, in ssr_account3
    ssr_info = str(base64.b64decode(content.text),
  File "/usr/local/python3.5/lib/python3.5/base64.py", line 88, in b64decode
    return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
  • 有可能是python base64庫編碼規則不太統一導致的;解決辦法就是對base64解碼的string補齊等號就可以了; python中base64串的長度需爲4的整數倍,故對長度不爲4整數倍的base64串需要用"='補足

def decode_base64(data):
    """Decode base64, padding being optional.
    :param data: Base64 data as an ASCII byte string
    :returns: The decoded byte string.

    """
    missing_padding = 4 - len(data) % 4
    if missing_padding:
        data += '='* missing_padding
    return str(base64.b64decode(data),
                           encoding='utf-8')
  • 這回把加密字符串傳過去就沒報錯了
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章