Како функционише Басе64 кодирање

Басе64 кодирање је процес претварања бинарних података у АСЦИИ формат стринга претварањем тих бинарних података у 6-битни приказ знакова. Басе64 метода кодирања се користи када се бинарни подаци, као што су слике или видео, преносе преко система који су дизајнирани да преносе податке у формату обичног текста (АСЦИИ).

Зашто се користи Басе64 кодирање?

Потреба за Басе64 кодирањем произилази из проблема који се јављају када се медиј преноси сирови бинарни формат на системе засноване на тексту.

Пошто системи засновани на тексту (нпр емаил) тумачи бинарне податке као широк спектар знакова, укључујући посебне командне знакове, велики део бинарних података који се преноси на медијум за пренос је погрешно протумачен од стране тих система и изгубљен или оштећен у преносу процес.

Човек који гледа у компјутерски код на екрану
Вуттхицхаи Луемуанг / ЕиеЕм / Гетти Имагес

Један од метода кодирања ове врсте бинарних података на начин који избегава такве проблеме у преносу је да их пошаљете као обичан АСЦИИ текст у Басе64 кодираном формату. Ово је једна од техника које користи МИМЕ стандард за слање података осим обичног текста.

Многи програмски језици, као што су ПХП и Јавасцрипт, укључују Басе64 функције кодирања и декодирања како би интерпретирали податке који се преносе коришћењем Басе64 кодирања.

Логика кодирања Басе64

Басе64 кодирање разбија бинарне податке у 6-битне сегменте од 3 пуна бајта и представља их као знакове за штампање у АСЦИИ стандарду. То ради у суштини у два корака.

Први корак је да разбијете бинарни низ на 6-битне блокове. Басе64 користи само 6 бита (што одговара 2^6 = 64 карактера) да би осигурао да се кодирани подаци могу штампати и читати људима. Не користи се ниједан од специјалних знакова доступних у АСЦИИ-у.

64 знака (отуда назив Басе64) су 10 цифара, 26 малих слова, 26 великих знакова, као и знак плус (+) и коса црта (/). Постоји и 65. знак познат као а пад, што је знак једнакости (=). Овај знак се користи када последњи сегмент бинарних података не садржи пуних 6 битова.

Пример кодирања Басе64

На пример, узмите три АСЦИИ броја 155, 162 и 233. Ова три броја чине бинарни ток од 100110111010001011101001. Бинарна датотека, као и слика, садржи бинарни ток који се покреће за десетине или стотине хиљада нула и јединица.

Басе64 кодер почиње тако што дели бинарни ток у групе од шест знакова: 100110 111010 001011 101001. Свака од ових група се преводи у бројеве 38, 58, 11 и 41.

Бинарни ток од шест знакова конвертује између бинарних (или базе-2) у децималне (основне-10) знакове тако што квадрира сваку вредност представљену са 1 у бинарној секвенци са својим позиционим квадратом. Почевши са десне стране и померајући се лево, и почевши од нуле, вредности у бинарном току представљају 2^0, затим 2^1, затим 2^2, затим 2^3, затим 2^4, па 2^5.

Ево још једног начина да то погледате. Почевши са леве стране, свака позиција вреди 1, 2, 4, 8, 16 и 32. Ако бинарни број има 1 у слоту, ви додајете ту вредност; ако има 0 у слоту, немате. Бинарни низ 100110 се претвара у децимални број 38: 0*2^01 + 1*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 0+2 +4+0+0+32.

Басе64 кодирање узима овај бинарни стринг и разлаже га на 6-битне вредности 38, 58, 11 и 41.

Коначно, ови бројеви се конвертују у АСЦИИ знакове помоћу Басе64 табеле кодирања. 6-битне вредности овог примера преводе се у АСЦИИ секвенцу м6Лп.

Коришћење табеле конверзије Басе64:

  • 38 је м
  • 58 је 6
  • 11 је Л
  • 41 је стр

Овај процес у два корака се примењује на цео бинарни стринг који је кодиран.

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

Целокупна сврха Басе64 кодирања, од додавања допуна за очување бинарних сегмената од 3 бајта до претварање бинарног у текст помоћу Басе64 табеле је очување интегритета пренете бинарности информације.

Басе64 табела кодирања

Следећа табела преводи свих 64 знака који се користе у Басе64 кодирању.

Басе64 табела кодирања
Валуе Цхар Валуе Цхар Валуе Цхар Валуе Цхар
0 А 16 П 32 г 48 в
1 Б 17 Р 33 х 49 Икс
2 Ц 18 С 34 и 50 и
3 Д 19 Т 35 ј 51 з
4 Е 20 У 36 к 52 0
5 Ф 21 В 37 л 53 1
6 Г 22 В 38 м 54 2
7 Х 23 Икс 39 н 55 3
8 И 24 И 40 о 56 4
9 Ј 25 З 41 стр 57 5
10 К 26 а 42 к 58 6
11 Л 27 б 43 р 59 7
12 М 28 ц 44 с 60 8
13 Н 29 д 45 т 61 9
14 О 30 е 46 у 62 +
15 П 31 ф 47 в 63 /

Решавање завршнице

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

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

Наравно, ове вештачке '0' на крају не могу да се кодирају коришћењем табеле кодирања испод. Морају бити представљени 65. знаком. Басе64 допунски знак је знак једнакости (=) и налази се на крају кодираних података.