И Base64, и Base64url являются способами кодирования двоичных данных в строковой форме. Вы можете прочитать о теории base64 здесь . Проблема с Base64 состоит в том, что он содержит символы +
, /
и =
, которые имеют зарезервированное значение в именах некоторых файловых систем и URL-адресах. Таким образом, base64url решает эту проблему, заменяя +
на -
и /
на _
. Конечный символ заполнения =
может быть удален, когда в нем нет необходимости, но в URL он, скорее всего, будет %
URL-кодом. Тогда закодированные данные могут быть включены в URL без проблем.
Ниже я приведу определения из стандартов.
4. Кодировка Base 64
Следующее описание базы 64 взято из 3 , [4], [5],
и [6]. Это кодирование может называться «base64».
Кодировка Base 64 предназначена для представления произвольных последовательностей.
октетов в форме, которая позволяет использовать как верхний, так и верхний
строчные буквы, но они не должны быть удобочитаемыми.
Используется 65-символьное подмножество US-ASCII, позволяющее 6 битам быть
представлены на печатный символ. (Лишний 65-й символ "=",
используется для обозначения специальной функции обработки.)
Процесс кодирования представляет 24-битные группы входных битов в виде
выходные строки из 4 кодированных символов. Исходя из слева в
правильно, 24-битная входная группа формируется путем объединения 3 8-битных
входные группы. Эти 24 бита затем обрабатываются как 4 сцепленных
6-битные группы, каждая из которых переводится в один символ
в базе 64 алфавита.
Каждая 6-битная группа используется в качестве индекса в массиве из 64 печатных
персонажи. Символ, на который ссылается индекс, помещается в
выходная строка.
Table 1: The Base 64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
Специальная обработка выполняется, если доступно менее 24 бит
в конце кодируемых данных. Квант полного кодирования -
всегда завершается в конце количества. Когда менее 24 входных
биты доступны во входной группе, биты со значением ноль добавляются
(справа) для формирования целого числа 6-битных групп. Перетяжка
в конце данные выполняются с использованием символа «=». С
все входы base 64 представляют собой целое число октетов, только следующие
могут возникнуть случаи:
(1) Последний квант входного кодирования представляет собой целое кратное
24
бит; здесь конечная единица кодированного вывода будет интегральной
кратно 4 символам без дополнения "=".
(2) Конечный квант входного кодирования составляет ровно 8 бит; Вот,
конечная единица закодированного вывода будет двумя символами, сопровождаемыми
два символа заполнения "=".
(3) Конечный квант входного кодирования составляет ровно 16 бит; Вот,
конечная единица кодированного вывода будет состоять из трех символов, за которыми следует
один символ заполнения "=".
5. Кодировка Base 64 с URL и именем файла Безопасный алфавит
Кодировка Base 64 с URL-адресом и безопасным алфавитом имени файла имеет
использовался в [12].
Был предложен альтернативный алфавит, который использовал бы "~" в качестве
63-й персонаж. Поскольку символ "~" имеет особое значение в
некоторые среды файловой системы, кодировка описана в этом
раздел рекомендуется вместо. Оставшийся незарезервированный URI
символ ".", но некоторые среды файловой системы не позволяют
несколько "." в имени файла, таким образом, делая "." персонаж
также непривлекательный.
Символ пэда "=" обычно кодируется в процентах при использовании в
URI [9], но если длина данных известна неявно, это может быть
избегать, пропуская отступы; см. раздел 3.2.
Эта кодировка может называться «base64url».Эта кодировка
не должна рассматриваться как кодировка "base64", а
не должна именоваться только как "base64".Если не указано иное
, в противном случае «base64» относится к base 64 в предыдущем разделе.
Эта кодировка технически идентична предыдущей, за исключением букв алфавита 62: nd и 63: rd, так какуказано в таблице 2.
Table 2: The "URL and Filename safe" Base 64 Alphabet
Value Encoding Value Encoding Value Encoding Value Encoding
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 - (minus)
12 M 29 d 46 u 63 _
13 N 30 e 47 v (underline)
14 O 31 f 48 w
15 P 32 g 49 x
16 Q 33 h 50 y (pad) =