Base64

A Base64  szabvány a bináris adatok csak 64 ASCII karakterből álló kódolására . A kódoló ábécé latin AZ, az karaktereket , 0-9 számokat (összesen 62 karakter) és további 2 karaktert tartalmaz a megvalósítási rendszertől függően. Minden 3 eredeti bájt 4 karakterrel van kódolva (¹⁄₃-val növelve).

Ezt a rendszert széles körben használják az e- mailekben a bináris fájlok megjelenítésére az e-mail törzsében ( szállítási kódolás ).

MIME

A MIME Base64 e- mail formátumban ez egy olyan séma, amely tetszőleges bájtsorozatot konvertál nyomtatható ASCII - karakterek sorozatává.

A szabványos 62 karakter +, /és = speciális utótag kódként van kitöltve.

A Base64 ezen formájának teljes specifikációja az RFC 1421 és RFC 2045 szabványokban található . Ezt a sémát oktett ( byte ) sorozat kódolására használják .

Az adatok Base64-be való konvertálásához az első bájt a 24 bites puffer legjelentősebb nyolc bitjébe kerül, a következő a középső nyolc, a harmadik pedig a legkisebb jelentőségű nyolc bitbe. Ha háromnál kevesebb bájt van kódolva, akkor a megfelelő pufferbitek nullára kerülnek. Ezután a puffer minden hatodik bitje, a legjelentősebbekkel kezdve, az "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" karakterlánc indexeként kerül felhasználásra, és az indexek által mutatott karakterek a kimeneti karakterláncba kerülnek. Ha csak egy vagy két bájt van kódolva, az eredmény csak a karakterlánc első két vagy három karaktere lesz, a kimeneti karakterlánc pedig két vagy egy karakterrel van kitöltve =. Ez megakadályozza, hogy extra biteket adjanak a helyreállított adatokhoz. A folyamat megismétlődik a fennmaradó bemeneti adatokon.

Például Thomas Hobbes idézete a Leviathanból :

Az embert nemcsak az esze, hanem ez az egyedülálló szenvedély különbözteti meg a többi állatoktól, ami az elme vágya, amely a tudás folyamatos és fáradhatatlan nemzedékében való gyönyörködtetésével túlszárnyal minden testi élvezet rövid hevességét. .

ASCII-ről Base64-re konvertálva így néz ki:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0 aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1 c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0 aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

A példában a Man szó TWFu-ként van kódolva. Az átalakítási folyamat a következő táblázatban ábrázolható:

Forrás szöveg M a n
ASCII kódok 77 (0x4d) 97 (0x61) 110 (0x6e)
Bináris nézet 0 egy 0 0 egy egy 0 egy 0 egy egy 0 0 0 0 egy 0 egy egy 0 egy egy egy 0
Index érkezett a Base64-ben 19 22 5 46
A végeredmény a Base64-ben T W F u

Base64 karakter-érték leképezés

Szimbólum Jelentése Szimbólum Jelentése Szimbólum Jelentése Szimbólum Jelentése
tíz 2 nyolc 16 tíz 2 nyolc 16 tíz 2 nyolc 16 tíz 2 nyolc 16
A 0 000000 00 00 K 16 010000 húsz tíz g 32 100 000 40 húsz w 48 110 000 60 harminc
B egy 000001 01 01 R 17 010001 21 tizenegy h 33 100001 41 21 x 49 110001 61 31
C 2 000010 02 02 S tizennyolc 010010 22 12 én 34 100010 42 22 y ötven 110010 62 32
D 3 000011 03 03 T 19 010011 23 13 j 35 100011 43 23 z 51 110011 63 33
E négy 000100 04 04 U húsz 010100 24 tizennégy k 36 100100 44 24 0 52 110100 64 34
F 5 000101 05 05 V 21 010101 25 tizenöt l 37 100101 45 25 egy 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
én nyolc 001000 tíz 08 Y 24 011000 harminc tizennyolc o 40 101000 ötven 28 négy 56 111000 70 38
J 9 001001 tizenegy 09 Z 25 011001 31 19 p 41 101001 51 29 5 57 111001 71 39
K tíz 001010 12 0A a 26 011010 32 1A q 42 101010 52 2A 6 58 111010 72 3A
L tizenegy 001011 13 0B b 27 011011 33 1B r 43 101011 53 2B 7 59 111011 73 3B
M 12 001100 tizennégy 0C c 28 011100 34 1C s 44 101100 54 2C nyolc 60 111100 74 3C
N 13 001101 tizenöt 0D d 29 011101 35 1D t 45 101101 55 2D 9 61 111101 75 3D
O tizennégy 001110 16 0E e harminc 011110 36 1E u 46 101110 56 2E + 62 111110 76 3E
P tizenöt 001111 17 0F f 31 011111 37 1F v 47 101111 57 2F / 63 111111 77 3F

UTF-7

Az UTF-7 a Base64 módosított változata. Ezt a kódolási sémát UTF-16 fájlokhoz használják köztes formátumként a MIME-ben. Az UTF-7 tartalomátviteli kódolás nélküli e-mailben való unicode -dal való használatra készült . A fő különbség a Base64 változat és a MIME között az, hogy a karaktert =nem használjuk kitöltésre, mivel a karaktert többször meg kell szökni. Ehelyett az oktett bitjei nullákkal vannak kitöltve.

A módosított Base64 az RFC 2152 ( A Mail-Safe Transformation Format of Unicode ) szerint szabványosított.

IRCu

Az IRC és a kompatibilis szoftverek által használt szerver-kiszolgáló protokollban a Base64 verziót használják a kliens/szerver numerikus és bináris IP-címek kódolására. A kliens és szerver numerikus adatok fix méretűek, amelyek pontosan megegyeznek a Base64 karakterek számával, így nincs szükség kitöltésre. A bináris IP-címek a bevezető nulla bitekkel bővülnek. A karakterkészlet kissé eltér a MIME karakterkészletétől, mivel a []helyett a karakterkészletet használja +/.

Alkalmazás webes alkalmazásokban

A Base64-nek köszönhetően a bináris tartalom beépíthető a html dokumentumokba, így egyetlen dokumentum jön létre külön képek és egyéb további fájlok nélkül. Így egy grafikát, hangot, videót, programokat, stílusokat és egyéb kiegészítéseket tartalmazó html dokumentum kiváló alternatívává válik az összetett dokumentumok egyéb formátumaihoz, mint például a doc, docx, pdf.

Egyes alkalmazások bináris adatokat kódolnak az URL-ekbe, rejtett űrlapmezőkbe való egyszerű felvétel érdekében.

A Base64 szabványon felüli URL-kódoló használata nem mindig kényelmes, mivel a karaktereket /és +speciális hexadecimális szekvenciákat alakítja át. Bár ez az átalakítás visszafordítható, meghosszabbítja a karakterláncot, és kissé megnehezíti a későbbi elemzést. Ezenkívül előfordulhat, %hogy az URL-kódoló által generált karaktert ismét fel kell szabadítani, amikor az eredményül kapott karakterláncot más rendszereken keresztül továbbítják (például az SQL -ben ez egy sablonelem).

Emiatt van egy módosított Base64 az URL számára , ahol a karakterek kitöltése =és a szimbólumok nem használatosak , és helyettük a +és a . Ezért az URL-kódolók/dekódolók használata már nem szükséges, és nincs hatással a kódolt érték hosszára, így ugyanaz a kódolt forma érintetlenül marad a relációs adatbázisokban, webes űrlapokban és általában az objektumazonosítókban. Az URL -ek Base64-kódolása felismeri a változatot, amikor a és karakterek helyére a és karakterek cserélődnek ( RFC 3548 , 4. szakasz). /*-+/-_

A másik változat neve módosított Base64 a reguláris kifejezésekhez és felhasználásokhoz , a !és -helyett *pedig -a szabványos Base64 helyettesítésére +/, mivel a +és mindkettő *lefoglalható a reguláris kifejezésekhez (megjegyzendő, hogy []az IRCu változatban fentebb használt ebben az összefüggésben előfordulhat, hogy nem működik).

Vannak más opciók is, amelyek az _és -vagy .és _a Base64 karakterláncot használják a programok azonosítóival együtt, vagy .és -XML névjogkivonatokban ( Nmtoken ), vagy _korlátozottabb :XML azonosítókban ( Name ). Bizonyos esetekben az URL a Base58 -at használja , amely nem használja a +és a karaktereket /.

Base58

A Base58-at egyes rendszerekben az URL -ek kódolására használják , ami abban különbözik a Base64-től, hogy a végső szövegben nincsenek olyan karakterek, amelyeket egy személy félreérthetően észlelhet. 0 (nulla), O (latin nagybetűs o ), I (latin nagybetűs i ), l (kis latin L ) nem szerepel . A + (plusz) és / (perjel) karakterek szintén kizártak , amelyek egy URL kódolásakor a cím helytelen értelmezéséhez vezethetnek.

Radix-64

A Radix-64 a PGP -ben használt bináris adatok szöveges formátumú Base64 kódolásának egy változata . Abban különbözik a Base64-től, hogy egy 24 bites ellenőrző összeg kerül a végére.

A Unix alapú operációs rendszerek a B64 kódolást használó /etc/passwd fájlban tárolják a crypttel számított jelszókivonatokat . Hasonló a Radix-64-hez, de az igazítási utótagot nem használják, és az ábécében a nem alfabetikus karakterek az elejére kerülnek: . =./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Egyéb felhasználások

A Base64-nek számos felhasználási módja van. Például a Thunderbird és a Mozilla Suite a Base64-et használta a jelszavak elrejtésére a POP3 -ban . A Base64 használható módszerként a titkok elrejtésére a kriptográfiai kulcskezelés többletköltsége nélkül , azonban ez a megközelítés teljesen nem biztonságos, és nem ajánlott.

Azok a levélszemét - szkennerek , amelyek nem dekódolják az üzeneteket Base64-re, gyakran figyelmen kívül hagyják őket, mivel az ilyen üzenetek elég véletlenszerűnek tűnnek ahhoz, hogy összetéveszthetők legyenek spammel. Ezt használják a spamküldők az alapvető levélszemét-szűrő eszközök megkerülésére.

Ez a szabvány a JPEG és PNG képek kódolására, FB2 e-könyvekbe való beillesztésére szolgál [1] .

Vannak olyan alkalmazások, amelyek Base64 kódolást használnak kis képek küldésére hosszú SMS -ben [2] .

Jegyzetek

  1. A bináris elem a FictionBook . fictionbook.org. Letöltve: 2019. szeptember 23. Az eredetiből archiválva : 2019. szeptember 22.
  2. Képes SMS | F-Droid – ingyenes és nyílt forráskódú Android-alkalmazástár . f-droid.org . Letöltve: 2021. április 23. Az eredetiből archiválva : 2021. április 23.

Linkek

Online kódolás és dekódolás