2015-06-10 3 views

ответ

2

модуль питона base64 следующим RFC 3584. Для кодирования base32,

Заполнение в конце данных выполняется с использованием символа «=». Так как все основание 32 вход целое число октетов, только могут возникают следующие случаи:

(1) конечный квант кодирования входного является целым кратным 40 бит; здесь конечная единица кодированного выхода будет интегральной величиной , состоящей из 8 символов без пробелов «=»,

(2) окончательный квант ввода кодировки составляет ровно 8 бит; здесь окончательный блок кодированного вывода будет содержать два символа, за которыми следуют шесть символов «=»,

(3) конечный квант ввода кодировки составляет ровно 16 бит; здесь окончательный блок будет содержать четыре символа, за которыми следуют четыре знака «=»,

(4) конечный квант ввода кодировки составляет ровно 24 бита; здесь окончательный блок будет состоять из пяти символов, за которыми следуют три символа пробега «=», или

(5) конечный квант ввода кодировки составляет ровно 32 бита; здесь окончательный блок кодированного выхода будет состоять из семи символов, за которым следует один символ "=".

Вы можете видеть, что нет допустимого случая для кодировки base32 RFC 3584, которая приведет к шести символам и двум заполняющим символам.

Пять символов дают вам 25 бит, поэтому достаточно закодировать три байта с одним дополнительным битом. Шесть символов дадут вам всего 30 бит, чего еще недостаточно для четырех байтов. С семью символами вы получаете 35 бит, чего достаточно для четырех байтов. Поскольку шесть символов не лучше пяти для кодирования целого числа байтов, он исключается из стандарта для последней заполненной 40-битной группы ввода из восьми символов, включая заполнение.

+0

Thanks @Eric. Я пытался декодировать строку, не считая, что она не может быть закодирована как первая. большое спасибо –

Смежные вопросы