Устранение ошибки неправильного заполнения при декодировании b64? - PullRequest
0 голосов
/ 29 апреля 2018

Описание функции: decodexorbase64(string, key) принимает вывод предыдущего функция (строка xor'd и ключ в кодировке base64) и возвращает исходная строка, в формате b '

Мой код:

def decodexorbase64(code, keyb64):
    keyoriginal = binascii.a2b_base64(key)
    stroriginal = binascii.a2b_base64(string)
    return (stroriginal, keyoriginal)

Выпуск:

print(decodexorbase64(b'\x02\x01\x04\x00\x03\x00Y^\x00', b'a2VybWl0\n')) выдает ошибку: binascii.Error: Incorrect padding

Что я могу написать в своем коде, чтобы избежать этой ошибки?

1 Ответ

0 голосов
/ 29 апреля 2018

Вы должны xor двоичный с двоичным, а не base 64 с base 64 и ожидать, что он возвращает base 64. Если вы XOR два ASCII-кодирования из base 64, то вы, вероятно, получите много байтов, установленных около нуля (так как первые биты, вероятно, совпадают ), что, кажется, отражает code или string в вопросе.

Сначала декодируйте, если требуется, затем XOR, затем снова кодируйте, если вам требуется текст в качестве вывода.


Примечания:

  • Я думаю, что вы переписали имена ваших параметров в объявлении функции;
  • первый массив (code) кажется двоичным, а не базовым 64
  • у второго массива есть завершающий символ конца строки, который не является частью алфавита base 64
...