Како функционира кодирањето Base64

Ако на интернет е информативен автопат, тогаш патеката за е-пошта е тесна клисура. Може да помине само многу мали коли.

Транспортниот систем на е-пошта е дизајниран само за обичен ASCII текст само. Обидувајќи се да испраќате текст на други јазици или арбитрарни датотеки, како да добиете камион низ клисура.

Како Големиот Камион оди преку Пресвета?

Тогаш, како праќаш голем камион низ мала клисура? Треба да го однесете на парчиња на едниот крај, да ги транспортирате парчињата низ клисурата и да го обновите камионот од парчињата на другиот крај.

Истото се случува кога ќе испратите прилог на датотека преку е-пошта . Во процес познат како шифрирање на бинарни податоци се трансформира во ASCII текст, кој може да се транспортира во е-пошта без проблеми. На крајот на примачот, податоците се декодираат и оригиналната датотека е повторно изградена.

Еден метод за кодирање на произволни податоци како обичен текст ASCII е Base64. Тоа е една од техниките употребени од MIME стандардот за испраќање на податоци, освен обичен текст .

Base64 за спасување

Кодирањето Base64 трае три бајти, секој од осум бита, и ги претставува како четири печатачи во ASCII стандардот. Тоа го прави тоа во суштина два чекори.

Првиот чекор е да се претворат три бајти во четири броја од шест бита. Секој лик во ASCII стандардот се состои од седум бита. Base64 користи само 6 бита (што одговара на 2 ^ 6 = 64 карактери) за да се обезбеди дека кодираните податоци се печатат и човечки читливи. Ниту еден од специјалните знаци кои се достапни во ASCII не се користат.

64-карактери (оттука името Base64) се 10 цифри, 26 мали букви, 26 големи букви, како и '+' и '/'.

Ако, на пример, трите бајти се 155, 162 и 233, соодветниот (и застрашувачки) бит поток е 100110111010001011101001, што пак одговара на 6-битните вредности 38, 58, 11 и 41.

Овие броеви се претвораат во ASCII знаци во вториот чекор користејќи ја табелата за кодирање Base64. 6-битните вредности на нашиот пример се претвораат во ASCII секвенцата "m6Lp".

Овој процес во два чекори се применува на целата секвенца на бајти кои се кодирани. За да се обезбеди дека кодираните податоци можат да се испечатат правилно и да не ги надминат ограничувањата на должината на должината на поштенскиот сервер, се внесуваат нови линии за да се задржат должините на линиите под 76 знаци. Новите линии се кодирани како сите други податоци.

Решавање на Endgame

На крајот од процесот на кодирање може да наидеме на проблем. Ако големината на оригиналните податоци во бајти е повеќе од три, сè е во ред. Ако не е, може да завршиме со еден или два 8-битни бајти. Меѓутоа, за правилно шифрирање, потребни ни се три бајти.

Решението е да додадете доволно бајти со вредност од '0' за да креирате 3-бајт група. Две такви вредности се додадени ако имаме еден екстра бајт на податоци, еден се додава за два дополнителни бајти.

Се разбира, овие вештачки задни '0' не можат да бидат кодирани со користење на табелата за кодирање подолу. Тие мора да бидат претставени со 65-ти карактер.

Карактерот за База64 е "=". Се разбира, тоа може само да се појави на крајот на кодираните податоци.

Табела за кодирање Base64

Вредност Char Вредност Char Вредност Char Вредност Char
0 A 16 Q 32 g 48 w
1 Б. 17 Р 33 h 49 x
2 C 18 S 34 i 50 y
3 Д 19 Т 35 j 51 z
4 Е 20 U 36 к 52 0
5 F 21 V 37 л 53 1
6 Г. 22 W 38 м 54 2
7 H 23 X 39 n 55 3
8 Јас 24 Y 40 o 56 4
9 J 25 Z 41 стр 57 5
10 K 26 a 42 q 58 6
11 Л 27 б 43 р 59 7
12 М. 28 в 44 s 60 8
13 N 29 d 45 т 61 9
14 О 30 e 46 u 62 +
15 P 31 f 47 v 63 /