[pyar] padding en base64

Matias Graña matias.alejo en gmail.com
Mar Dic 14 13:24:06 ART 2010


2010/12/14 Ricardo Armas <rarmas en gmail.com>:
> On Tue, Dec 14, 2010 at 12:43 PM, Matias Graña <matias.alejo en gmail.com> wrote:
>> 2010/12/14 Ricardo Armas <rarmas en gmail.com>:
>>> 2010/12/13 Matias Graña <matias.alejo en gmail.com>:
>>>> Y ya que estamos: str.decode('base64') es lo mismo que
>>>> base64.b64decode() ? Esto efectivamente haría inútil el import base64.
>>> Efectivamente y cambié los base64.b64decode a str.decode("base64") y
>>> no tuve más problemas de padding, no necesito agregar ningún '='.
>>
>> Eso es raro:
>>
>>>>> 'mal'.decode('base64')
>> Traceback (most recent call last):
>>  File "<input>", line 1, in <module>
>>  File "/usr/lib/python2.6/encodings/base64_codec.py", line 42, in base64_decode
>>    output = base64.decodestring(input)
>>  File "/usr/lib/python2.6/base64.py", line 321, in decodestring
>>    return binascii.a2b_base64(s)
>> Error: Incorrect padding
>>
>>>>> 'mal='.decode('base64')
>> '\x99\xa9'
> Ojo, lo que yo estoy decodeando de base64 es el cuerpo de un mail que
> supuestamente está bien encodeado, con lo que el padding debería andar
> bien, pero con el base64.b64decode me daba error y tenía que agregar
> '==' seguramente hay algo que no estoy entendiendo bien, pero ahora
> anda perfecto.

Yo probaría con mensajes de distintos largos, porque si los mails que
mirás vienen sin el padding y vos no lo agregás, deberías recibir una
excepción. O quizás la versión de str.decode('base64') que vos tenés
agrega el padding automáticamente? Con respecto al ejemplo que mandé,
cualquier cadena que contenga caracteres A-Za-z0-9 es válido como
base64, así que si a vos también te salta el error con
'mal'.decode('base64'), el problema lo seguís teniendo.

Matías



More information about the pyar mailing list