第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:base64解碼時忽略“錯誤填充”錯誤

Python:base64解碼時忽略“錯誤填充”錯誤

哆啦的時光機(jī) 2019-10-17 10:12:28
我有一些base64編碼的數(shù)據(jù),即使其中存在填充錯誤,我也想將其轉(zhuǎn)換回二進(jìn)制。如果我用base64.decodestring(b64_string)會引發(fā)“填充錯誤”錯誤。還有另一種方法嗎?更新:感謝您的所有反饋。老實(shí)說,提到的所有方法聽起來都有些失敗,所以我決定嘗試使用openssl。以下命令可以有效地解決問題:openssl enc -d -base64 -in b64string -out binary_data
查看完整描述

3 回答

?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個贊

只需根據(jù)需要添加填充。但是,請注意邁克爾的警告。


b64_string += "=" * ((4 - len(b64_string) % 4) % 4) #ugh


查看完整回答
反對 回復(fù) 2019-10-17
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個贊

“不正確的填充”不僅可以表示“缺少填充”,還可以表示(不信不信)“不正確的填充”。


如果建議的“添加填充”方法不起作用,請嘗試刪除一些尾隨字節(jié):


lens = len(strg)

lenx = lens - (lens % 4 if lens % 4 else 4)

try:

    result = base64.decodestring(strg[:lenx])

except etc

更新:擺弄空白或從結(jié)尾刪除可能壞的字節(jié)的任何擺弄應(yīng)該在刪除任何空白之后進(jìn)行,否則長度計(jì)算將被打亂。


如果您向我們展示了您需要恢復(fù)的數(shù)據(jù)的(簡短)樣本,那將是一個好主意。編輯您的問題,然后復(fù)制/粘貼的結(jié)果 print repr(sample)。


更新2:可能已經(jīng)以url安全的方式完成了編碼。在這種情況下,您將能夠看到數(shù)據(jù)中的負(fù)號和下劃線字符,并且應(yīng)該能夠通過使用以下命令對其進(jìn)行解碼base64.b64decode(strg, '-_')


如果您在數(shù)據(jù)中看不到減號和下劃線字符,但是可以看到加號和斜杠字符,那么您還有其他問題,可能需要使用添加或刪除技巧。


如果您在數(shù)據(jù)中看不到減號,下劃線,加號和斜杠,則需要確定兩個替代字符;否則,請參見表。他們將是[A-Za-z0-9]中沒有的人。然后,您需要進(jìn)行實(shí)驗(yàn),以查看需要在哪個第二個參數(shù)中使用它們的順序base64.b64decode()


更新3:如果您的數(shù)據(jù)是“公司機(jī)密”:

(a)您應(yīng)該這樣說

(b)我們可以探索理解問題的其他途徑,這很可能與使用什么字符代替+和/使用編碼字母,或其他格式或無關(guān)字符。


一種方法是檢查數(shù)據(jù)中包含哪些非“標(biāo)準(zhǔn)”字符,例如


from collections import defaultdict

d = defaultdict(int)

import string

s = set(string.ascii_letters + string.digits)

for c in your_data:

   if c not in s:

      d[c] += 1

print d


查看完整回答
反對 回復(fù) 2019-10-17
  • 3 回答
  • 0 關(guān)注
  • 1256 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號