Základní 64

Base64  je standard pro kódování binárních dat pomocí pouze 64 znaků ASCII . Kódovací abeceda obsahuje latinské znaky AZ, az, čísla 0-9 (celkem 62 znaků) a 2 další znaky v závislosti na implementačním systému. Každé 3 původní bajty jsou zakódovány 4 znaky (přírůstek o ¹⁄₃).

Tento systém je široce používán v e-mailu k reprezentaci binárních souborů v těle e-mailu ( kódování transportu ).

MIME

V e-mailovém formátu MIME Base64 se jedná o schéma, které převádí libovolnou sekvenci bajtů na sekvenci tisknutelných znaků ASCII .

Standardních 62 znaků je doplněno +o , /a = jako speciální příponový kód.

Kompletní specifikace této formy Base64 se nachází v RFC 1421 a RFC 2045 . Toto schéma se používá ke kódování sekvence oktetů ( bajtů ).

Aby bylo možné převést data na Base64, je první bajt umístěn do nejvýznamnějších osmi bitů 24bitové vyrovnávací paměti, další do prostředních osmi a třetí do nejméně významných osmi bitů. Pokud jsou zakódovány méně než tři bajty, pak jsou odpovídající bity vyrovnávací paměti nastaveny na nulu. Potom se každých šest bitů vyrovnávací paměti, počínaje těmi nejvýznamnějšími, použije jako index řetězce "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" a jeho znaky, na které indexy ukazují, se umístí do výstupního řetězce. Pokud je zakódován pouze jeden nebo dva bajty, výsledkem jsou pouze první dva nebo tři znaky řetězce a výstupní řetězec je doplněn dvěma nebo jedním znakem =. Tím se zabrání přidávání dalších bitů do obnovených dat. Proces se opakuje na zbývajících vstupních datech.

Například citát z Leviathana od Thomase Hobbese :

Člověk se odlišuje nejen svým rozumem, ale i touto jedinečnou vášní od jiných zvířat, což je chtíč mysli, která vytrvalostí rozkoše v neustálém a neúnavném generování znalostí přesahuje krátkou prudkost jakékoli tělesné rozkoše. .

při převodu z ASCII na Base64 vypadá takto:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0 aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1 c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0 aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

V příkladu je slovo Man zakódováno jako TWFu. Proces převodu lze znázornit jako následující tabulka:

Zdrojový text M A n
ASCII kódy 77 (0x4d) 97 (0x61) 110 (0x6e)
Binární pohled 0 jeden 0 0 jeden jeden 0 jeden 0 jeden jeden 0 0 0 0 jeden 0 jeden jeden 0 jeden jeden jeden 0
Přijatý index v Base64 19 22 5 46
Konečný výsledek v Base64 T W F u

Base64 mapování znakové hodnoty

Symbol Význam Symbol Význam Symbol Význam Symbol Význam
deset 2 osm 16 deset 2 osm 16 deset 2 osm 16 deset 2 osm 16
A 0 000 000 00 00 Q 16 010 000 dvacet deset G 32 100 000 40 dvacet w 48 110 000 60 třicet
B jeden 000001 01 01 R 17 010001 21 jedenáct h 33 100 001 41 21 X 49 110001 61 31
C 2 000010 02 02 S osmnáct 010010 22 12 i 34 100010 42 22 y padesáti 110010 62 32
D 3 000011 03 03 T 19 010011 23 13 j 35 100011 43 23 z 51 110011 63 33
E čtyři 000100 04 04 U dvacet 010100 24 čtrnáct k 36 100100 44 24 0 52 110100 64 34
F 5 000101 05 05 PROTI 21 010101 25 patnáct l 37 100101 45 25 jeden 53 110101 65 35
G 6 000110 06 06 W 22 010110 26 16 m 38 100110 46 26 2 54 110110 66 36
H 7 000111 07 07 X 23 010111 27 17 n 39 100111 47 27 3 55 110111 67 37
osm 001000 deset 08 Y 24 011000 třicet osmnáct Ó 40 101 000 padesáti 28 čtyři 56 111 000 70 38
J 9 001001 jedenáct 09 Z 25 011001 31 19 p 41 101001 51 29 5 57 111001 71 39
K deset 001010 12 0A A 26 011010 32 1A q 42 101010 52 2A 6 58 111010 72 3A
L jedenáct 001011 13 0B b 27 011011 33 1B r 43 101011 53 2B 7 59 111011 73 3B
M 12 001100 čtrnáct 0C C 28 011100 34 1C s 44 101100 54 2C osm 60 111100 74 3C
N 13 001101 patnáct 0D d 29 011101 35 1D t 45 101101 55 2D 9 61 111101 75 3D
Ó čtrnáct 001110 16 0E E třicet 011110 36 1E u 46 101110 56 2E + 62 111110 76 3E
P patnáct 001111 17 0F F 31 011111 37 1F proti 47 101111 57 2F / 63 111111 77 3F

UTF-7

UTF-7 je upravená verze Base64. Toto schéma kódování se používá pro soubory UTF-16 jako meziformát v MIME. UTF-7 je určeno pro použití s ​​unicode v e-mailu bez kódování přenosu obsahu. Hlavní rozdíl mezi touto variantou Base64 a MIME spočívá v tom, že znak =se nepoužívá pro výplň, protože znak je třeba několikrát escapovat. Místo toho jsou bity oktetu doplněny nulami.

Upravený Base64 je standardizován podle RFC 2152 ( Mail-Safe Transformation Format of Unicode ).

IRCu

V protokolu server-to-server používaném IRC a kompatibilním softwarem se verze Base64 používá ke kódování číselných a binárních IP adres klient/server. Číselná data klienta a serveru mají pevnou velikost, která přesně odpovídá počtu znaků Base64, takže není potřeba vyplňování. Binární IP adresy jsou rozšířeny o úvodní nulové bity, aby odpovídaly. Znaková sada se mírně liší od MIME tím, že []místo +/.

Aplikace ve webových aplikacích

Díky Base64 lze binární obsah zahrnout do html dokumentů a vytvořit tak jeden dokument bez samostatných obrázků a dalších doplňkových souborů. HTML dokument s grafikou, zvukem, videem, programy, styly a dalšími doplňky se tak stává vynikající alternativou k jiným formátům složitých dokumentů, jako jsou doc, docx, pdf.

Některé aplikace kódují binární data pro snadné zahrnutí do adres URL, skrytých polí formuláře.

Použití kodéru URL přes standard Base64 není vždy pohodlné, protože převádí znaky /a +na speciální hexadecimální sekvence. Ačkoli je tento převod reverzibilní, prodlužuje řetězec a ztěžuje jeho pozdější analýzu. Znak %vygenerovaný kodérem URL může být navíc potřeba znovu escapovat při předávání výsledného řetězce jinými systémy (například v SQL jde o prvek šablony).

Z tohoto důvodu je upraven Base64 pro URL , kde se nepoužívá výplň znaků =a symboly a jsou nahrazeny +a resp . Proto použití kodérů/dekodérů URL již není nutné a nemá žádný vliv na délku zakódované hodnoty, takže stejná zakódovaná forma zůstává nedotčená pro použití v relačních databázích, webových formulářích a identifikátorech objektů obecně. Base64 kódování URL rozpozná variantu, když jsou znaky nahrazeny a ( RFC 3548 , sekce 4). /*-+/-_

Druhá varianta se nazývá upravená Base64 pro regulární výrazy a použití !a -místo *a -, nahrazuje standardní Base64 +/, protože obojí +a *může být vyhrazeno pro regulární výrazy (všimněte si, že []použité výše ve variantě IRCu nemusí v tomto kontextu fungovat) .

Existují další možnosti, které používají _a -nebo .a _pokud má být řetězec Base64 použit ve spojení s identifikátory pro programy nebo .a -pro použití v tokenech názvů XML ( Nmtoken ) nebo _v :omezenějších identifikátorech XML ( Name ). V některých případech URL používá Base58 , který nepoužívá znaky +a /.

Base58

Base58 se používá ke kódování URL v některých systémech, které se liší od Base64 absencí znaků v konečném textu, které může osoba vnímat nejednoznačně. 0 (nula), O (velké latinské o ), I (velké latinské i ), l (malé latinské L ) jsou vyloučeny . Vyloučeny jsou také znaky + (plus) a / (lomítko), které při kódování adresy URL mohou vést k nesprávné interpretaci adresy.

Radix-64

Radix-64 je variací Base64 kódování binárních dat do textového formátu používaného v PGP . Od Base64 se liší tím, že na konec je přidán 24bitový kontrolní součet .

Operační systémy založené na Unixu ukládají hash hesel vypočítaný pomocí šifrování v souboru /etc/passwd pomocí kódování B64 . Je podobný Radix-64, ale =nepoužívá se přípona zarovnání a v abecedě jsou na začátek umístěny neabecední znaky: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.

Další použití

Base64 má mnoho využití. Například Thunderbird a Mozilla Suite používaly Base64 ke skrytí hesel v POP3 . Base64 lze použít jako metodu ke skrytí tajemství bez režie správy kryptografických klíčů , avšak tento přístup je zcela nejistý a nedoporučuje se.

Spamové skenery , které nedekódují zprávy do Base64, je často zmeškají, protože takové zprávy se zdají být natolik náhodné, že je lze zaměnit za spam. Toho využívají spameři k obcházení základních antispamových nástrojů.

Tento standard se používá ke kódování obrázků JPEG a PNG, k jejich vkládání do e-knih FB2 [1] .

Existují aplikace, které používají kódování Base64 k odesílání malých obrázků prostřednictvím dlouhých SMS [2] .

Poznámky

  1. Binární prvek je FictionBook . fictionbook.org. Získáno 23. září 2019. Archivováno z originálu 22. září 2019.
  2. Obrázková SMS | F-Droid – Free and Open Source Android App Repository . f-droid.org . Získáno 23. dubna 2021. Archivováno z originálu dne 23. dubna 2021.

Odkazy

Online kódování a dekódování