Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python b64decode incorrect padding

I'm sending a file over small UDP packets. (python 3) On the server I divide the file into small pieces and do

packets.append(b64encode(smallPart))

on the other side I do exactly the opposite

packets.append(b64decode(peice))    

However, I keep getting (in all but on packet) Incorrect Padding exception

Is there a standard size for b64decode that I'm missing?

like image 419
msshapira Avatar asked Dec 10 '22 08:12

msshapira


1 Answers

Base 64 works by encoding every 3 bytes into 4 bytes. When decoding, it takes those 4 bytes and converts them back to 3 bytes. If there were less than 3 bytes remaining in the input, the output is still padded with '=' to make 4 bytes. If the input to b64decode is not a multiple of 4 bytes you will get the exception.

The easiest solution for you will be to make sure your packets are always a multiple of 4 bytes.

like image 128
Mark Ransom Avatar answered Jan 03 '23 23:01

Mark Ransom