在有些字符串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 )
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' )
這回把加密字符串傳過去就沒報錯了