A Base64 kódolás a bináris adatok ASCII karakterlánc-formátummá konvertálásának folyamata azáltal, hogy ezeket a bináris adatokat 6 bites karakterreprezentációvá alakítja át. A Base64 kódolási módszert akkor használják, amikor bináris adatokat, például képeket vagy videót továbbítanak olyan rendszereken, amelyeket úgy terveztek, hogy egyszerű szöveges (ASCII) formátumban továbbítsanak adatokat.
Miért használnak Base64 kódolást?
A Base64 kódolás iránti igény azokból a problémákból adódik, amelyek akkor jelentkeznek, amikor a médiát nyers bináris formátumban továbbítják szöveges rendszerekhez.
Mivel a szöveges rendszerek (például az e-mail) a bináris adatokat karakterek széles skálájaként értelmezik, beleértve a speciális parancskaraktereket is, az adathordozóra továbbított bináris adatok nagy részét ezek a rendszerek rosszul értelmezik, és elvesznek vagy megsérülnek. az átviteli folyamat.
Az ilyen típusú bináris adatok kódolásának egyik módja az ilyen átviteli problémák elkerülése érdekében, ha egyszerű ASCII-szövegként küldik el őket Base64 kódolású formátumban. Ez az egyik olyan technika, amelyet a MIME szabvány használ az egyszerű szövegen kívüli adatok küldésére.
Sok programozási nyelv, mint például a PHP és a Javascript, tartalmaz Base64 kódolási és dekódoló funkciókat a Base64 kódolással továbbított adatok értelmezéséhez.
Base64 kódolási logika
A Base64 kódolás a bináris adatokat 6 bites, 3 teljes bájtos szegmensekre bontja, és ezeket nyomtatható karakterekként jeleníti meg az ASCII szabványban. Ez lényegében két lépésben történik.
Az első lépés a bináris karakterlánc 6 bites blokkokra bontása. A Base64 csak 6 bitet használ (ez 2^6=64 karakternek felel meg), hogy biztosítsa a kódolt adatok nyomtathatóságát és ember által olvashatóságát. Az ASCII-ben elérhető speciális karakterek egyike sem használatos.
A 64 karakter (innen a Base64 név) 10 számjegyből, 26 kisbetűből, 26 nagybetűből áll, valamint a pluszjelből (+) és a perjelből (/). Létezik egy 65. karakter is, amelyet padként ismerünk, ami az egyenlőségjel (=). Ez a karakter akkor használatos, ha a bináris adat utolsó szegmense nem tartalmaz teljes 6 bitet.
Base64 kódolási példa
Vegyünk például három ASCII-számot: 155, 162 és 233. Ez a három szám egy 100110111010001011101001 bináris adatfolyamot alkot. A bináris fájl, akárcsak egy kép, egy bináris adatfolyamot tartalmaz, amely tízezrek vagy nulla ezrekig fut. és egyesek.
A Base64 kódoló úgy indul, hogy a bináris adatfolyamot hat karakterből álló csoportokba bontja: 100110 111010 001011 101001. Ezen csoportosítások mindegyike 38, 58, 11 és 41.
A hat karakterből álló bináris adatfolyam a bináris (vagy 2-es) karaktereket decimális (10-es) karakterekké alakítja át úgy, hogy a bináris sorozatban 1-gyel képviselt értékeket négyzetre emeli a helyzeti négyzetével. Jobbról indulva balra haladva, és nullával kezdve, a bináris adatfolyam értékei 2^0, majd 2^1, majd 2^2, majd 2^3, majd 2^4, majd 2^5.
Íme egy másik módja annak, hogy megnézzük. Balról kezdve minden pozíció értéke 1, 2, 4, 8, 16 és 32. Ha a bináris számban 1 van a résben, akkor hozzáadja ezt az értéket; ha 0 van a nyílásban, akkor nincs. Az 100110 bináris karakterlánc 38-as decimális számmá konvertál: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.
A Base64 kódolás ezt a bináris karakterláncot veszi fel, és 6 bites 38, 58, 11 és 41 értékekre bontja.
Végül ezeket a számokat a rendszer ASCII karakterekké alakítja a Base64 kódolási táblázat segítségével. A példa 6 bites értékei a m6Lp. ASCII-szekvenciát jelentik
A Base64 konverziós tábla használata:
- 38 m
- 58 a 6
- 11 az L
- 41 p
Ez a kétlépéses folyamat a teljes kódolt bináris karakterláncra vonatkozik.
Annak érdekében, hogy a kódolt adatok megfelelően kinyomtathatók legyenek, és ne haladják meg a levelezőszerver sorhossz-korlátját, újsor karaktereket szúr be, hogy a sorok hossza 76 karakter alatt maradjon. Az újsor karakterei a többi adathoz hasonlóan kódolva vannak.
A Base64 kódolás teljes célja, a 3 bájtos bináris szegmensek megőrzését szolgáló kitöltéstől a binárisok szöveggé alakításáig a Base64 tábla használatával, az átvitt bináris információ integritásának megőrzése.
Base64 kódolási táblázat
A következő táblázat a Base64 kódolásban használt mind a 64 karaktert lefordítja.
Base64 kódolási táblázat | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Érték | Char | Érték | Char | Érték | Char | Érték | Char | |||
0 | A | 16 | Q | 32 | g | 48 | w | |||
1 | B | 17 | R | 33 | h | 49 | x | |||
2 | C | 18 | S | 34 | i | 50 | y | |||
3 | D | 19 | T | 35 | j | 51 | z | |||
4 | E | 20 | U | 36 | k | 52 | 0 | |||
5 | F | 21 | V | 37 | l | 53 | 1 | |||
6 | G | 22 | W | 38 | m | 54 | 2 | |||
7 | H | 23 | X | 39 | 55 | 3 | ||||
8 | Én | 24 | Y | 40 | o | 56 | 4 | |||
9 | J | 25 | Z | 41 | p | 57 | 5 | |||
10 | K | 26 | a | 42 | q | 58 | 6 | |||
11 | L | 27 | b | 43 | r | 59 | 7 | |||
12 | M | 28 | c | 44 | s | 60 | 8 | |||
13 | N | 29 | d | 45 | t | 61 | 9 | |||
14 | O | 30 | e | 46 | u | 62 | + | |||
15 | P | 31 | f | 47 | v | 63 | / |
A végjáték megoldása
A kódolási folyamat végén probléma adódhat. Ha az eredeti adatok mérete bájtban háromszoros, akkor minden jól működik. Ha nem, akkor üres bájtok lehetnek. A megfelelő kódoláshoz pontosan 3 bájt bináris adatra van szükség.
A megoldás az, hogy elegendő bájtot kell hozzáfűzni 0 értékkel egy 3 bájtos csoport létrehozásához. Két ilyen érték hozzáfűződik, ha az adatokhoz egy plusz bájt adatra van szükség, egyet két plusz bájthoz.
Természetesen ezek a mesterséges záró '0-k nem kódolhatók az alábbi kódolási táblázat segítségével. Ezeket egy 65. karakternek kell ábrázolnia. A Base64 kitöltési karakter az egyenlőségjel (=), és a kódolt adatok végén található.