153 votes

Python : Ignorer l'erreur 'Marge interne incorrecte' lors du décodage base64

J'ai des données qui sont encodées en base64 que je veux convertir en binaire même s'il y a une erreur de remplissage. Si j'utilise

base64.decodestring(b64_string)

il génère une erreur de « rembourrage incorrect ». Y a-t-il un autre moyen ?

MISE À JOUR : Merci pour tous les commentaires. Pour être honnête, toutes les méthodes mentionnées ont sonné un peu frappé et manqué donc j'ai décidé d'essayer openssl. La commande suivante a fonctionné un régal :

openssl enc -d -base64 -in b64string -out binary_data

46voto

badp Points 5036

Ajoutez simplement du rembourrage au besoin. Écoutez l'avertissement de Michael, cependant.

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

27voto

warvariuc Points 11787

Utiliser

string += '=' * (-len(string) % 4)  # restore stripped '='s

Le mérite va à un commentaire quelque part ici.

>>> import base64

>>> enc = base64.b64encode('1')

>>> enc
>>> 'MQ=='

>>> base64.b64decode(enc)
>>> '1'

>>> enc = enc.rstrip('=')

>>> enc
>>> 'MQ'

>>> base64.b64decode(enc)
...
TypeError: Incorrect padding

>>> base64.b64decode(enc + '=' * (-len(enc) % 4))
>>> '1'

>>> 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X