Base64 on standardi binääritietojen koodaamiseen käyttämällä vain 64 ASCII-merkkiä . Koodausaakkoset sisältävät latinalaisia merkkejä AZ, az, numeroita 0-9 (yhteensä 62 merkkiä) ja 2 lisämerkkiä toteutusjärjestelmästä riippuen. Jokainen 3 alkuperäistä tavua on koodattu 4 merkillä (lisäys ¹⁄₃).
Tätä järjestelmää käytetään laajasti sähköpostissa edustamaan binääritiedostoja sähköpostin rungossa ( kuljetuskoodaus ).
MIME Base64 -sähköpostimuodossa tämä on malli, joka muuntaa mielivaltaisen tavusarjan tulostettavien ASCII - merkkien sarjaksi.
Tavalliset 62 merkkiä on +täytetty , /ja = erikoisliitekoodina.
Tämän Base64-muodon täydellinen erittely löytyy RFC 1421 :stä ja RFC 2045:stä . Tätä menetelmää käytetään koodaamaan oktettisekvenssi ( tavuja ).
Datan muuntamiseksi Base64:ksi ensimmäinen tavu sijoitetaan 24-bittisen puskurin merkittävimpiin kahdeksaan bittiin, seuraava keskimmäiseen kahdeksaan ja kolmas vähiten merkitsevään kahdeksaan bittiin. Jos vähemmän kuin kolme tavua koodataan, vastaavat puskuribitit asetetaan nollaan. Sitten joka kuudes puskurin bitti, alkaen merkittävimmistä, käytetään merkkijonon "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" indekseinä ja sen merkit, joihin indeksit osoittavat, sijoitetaan lähtömerkkijonoon. Jos vain yksi tai kaksi tavua on koodattu, tuloksena on vain kaksi tai kolme ensimmäistä merkkijonoa ja tulostemerkkijono täytetään kahdella tai yhdellä merkillä =. Tämä estää ylimääräisten bittien lisäämisen palautettuihin tietoihin. Prosessi toistetaan jäljellä oleville syöttötiedoille.
Esimerkiksi Thomas Hobbesin lainaus Leviathanista :
Ihminen erottuu, ei vain järkensä, vaan myös tällä erityisellä intohimolla muista eläimistä, joka on mielen himo, joka sinnikkällä ilolla jatkuvasta ja väsymättömästä tiedon sukupolvesta ylittää minkä tahansa lihallisen nautinnon lyhyen kiihkeyden. .muunnetaan ASCII:stä Base64:ksi, näyttää tältä:
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0 aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1 c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0 aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=Esimerkissä sana Man on koodattu nimellä TWFu. Muunnosprosessi voidaan esittää seuraavana taulukona:
Lähdeteksti | M | a | n | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ASCII-koodit | 77 (0x4p) | 97 (0x61) | 110 (0x6e) | |||||||||||||||||||||
Binäärinäkymä | 0 | yksi | 0 | 0 | yksi | yksi | 0 | yksi | 0 | yksi | yksi | 0 | 0 | 0 | 0 | yksi | 0 | yksi | yksi | 0 | yksi | yksi | yksi | 0 |
Vastaanotettu indeksi Base64:ssä | 19 | 22 | 5 | 46 | ||||||||||||||||||||
Lopputulos Base64:ssä | T | W | F | u |
Symboli | Merkitys | Symboli | Merkitys | Symboli | Merkitys | Symboli | Merkitys | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kymmenen | 2 | kahdeksan | 16 | kymmenen | 2 | kahdeksan | 16 | kymmenen | 2 | kahdeksan | 16 | kymmenen | 2 | kahdeksan | 16 | |||||||
A | 0 | 000000 | 00 | 00 | K | 16 | 010000 | kaksikymmentä | kymmenen | g | 32 | 100 000 | 40 | kaksikymmentä | w | 48 | 110 000 | 60 | kolmekymmentä | |||
B | yksi | 000001 | 01 | 01 | R | 17 | 010001 | 21 | yksitoista | h | 33 | 100001 | 41 | 21 | x | 49 | 110001 | 61 | 31 | |||
C | 2 | 000010 | 02 | 02 | S | kahdeksantoista | 010010 | 22 | 12 | i | 34 | 100010 | 42 | 22 | y | viisikymmentä | 110010 | 62 | 32 | |||
D | 3 | 000011 | 03 | 03 | T | 19 | 010011 | 23 | 13 | j | 35 | 100011 | 43 | 23 | z | 51 | 110011 | 63 | 33 | |||
E | neljä | 000100 | 04 | 04 | U | kaksikymmentä | 010100 | 24 | neljätoista | k | 36 | 100100 | 44 | 24 | 0 | 52 | 110100 | 64 | 34 | |||
F | 5 | 000101 | 05 | 05 | V | 21 | 010101 | 25 | viisitoista | l | 37 | 100101 | 45 | 25 | yksi | 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 | |||
minä | kahdeksan | 001000 | kymmenen | 08 | Y | 24 | 011000 | kolmekymmentä | kahdeksantoista | o | 40 | 101 000 | viisikymmentä | 28 | neljä | 56 | 111 000 | 70 | 38 | |||
J | 9 | 001001 | yksitoista | 09 | Z | 25 | 011001 | 31 | 19 | s | 41 | 101001 | 51 | 29 | 5 | 57 | 111001 | 71 | 39 | |||
K | kymmenen | 001010 | 12 | 0A | a | 26 | 011010 | 32 | 1A | q | 42 | 101010 | 52 | 2A | 6 | 58 | 111010 | 72 | 3A | |||
L | yksitoista | 001011 | 13 | 0B | b | 27 | 011011 | 33 | 1B | r | 43 | 101011 | 53 | 2B | 7 | 59 | 111011 | 73 | 3B | |||
M | 12 | 001100 | neljätoista | 0C | c | 28 | 011100 | 34 | 1C | s | 44 | 101100 | 54 | 2C | kahdeksan | 60 | 111100 | 74 | 3C | |||
N | 13 | 001101 | viisitoista | 0D | d | 29 | 011101 | 35 | 1D | t | 45 | 101101 | 55 | 2D | 9 | 61 | 111101 | 75 | 3D | |||
O | neljätoista | 001110 | 16 | 0E | e | kolmekymmentä | 011110 | 36 | 1E | u | 46 | 101110 | 56 | 2E | + | 62 | 111110 | 76 | 3E | |||
P | viisitoista | 001111 | 17 | 0F | f | 31 | 011111 | 37 | 1F | v | 47 | 101111 | 57 | 2F | / | 63 | 111111 | 77 | 3F |
UTF-7 on Base64:n muokattu versio. Tätä koodausjärjestelmää käytetään UTF-16- tiedostoille MIME:n välimuotona. UTF-7 on tarkoitettu käytettäväksi sähköpostin unicoden kanssa ilman sisällönsiirtokoodausta. Suurin ero tämän Base64-version ja MIME:n välillä on se, että merkkiä =ei käytetä täyttöön, koska merkkiä on pakotettava useita kertoja. Sen sijaan oktetin bitit on täytetty nolilla.
Muokattu Base64 on standardoitu RFC 2152 :n ( A Mail-Safe Transformation Format of Unicode ) mukaisesti.
IRC :n ja yhteensopivien ohjelmistojen käyttämässä palvelin-palvelinprotokollassa Base64-versiota käytetään asiakas/palvelin numeeristen ja binaaristen IP-osoitteiden koodaamiseen. Asiakkaan ja palvelimen numeerisilla tiedoilla on kiinteät koot, jotka vastaavat tarkasti Base64-merkkien määrää, joten täyttöä ei tarvita. Binaariset IP-osoitteet on laajennettu nollabittien alussa. Merkistö eroaa hieman MIME:stä []käyttämällä +/.
Base64:n ansiosta binaarisisältöä voidaan sisällyttää html-dokumentteihin, jolloin saadaan yksi dokumentti ilman erillisiä kuvia ja muita lisätiedostoja. Siten html-dokumentista, jossa on grafiikkaa, ääntä, videota, ohjelmia, tyylejä ja muita siihen sisältyviä lisäyksiä, tulee erinomainen vaihtoehto monimutkaisten asiakirjojen, kuten doc, docx, pdf, muille muodoille.
Jotkut sovellukset koodaavat binaaridataa, jotta se voidaan helposti sisällyttää URL-osoitteisiin, piilotettuihin lomakekenttiin.
URL-enkooderin käyttäminen Base64-standardin yli ei aina ole kätevää, koska se muuntaa merkit /ja +erityiset heksadesimaalisekvenssit. Vaikka tämä muunnos on palautuva, se pidentää merkkijonoa ja vaikeuttaa sen myöhemmin jäsentämistä. Lisäksi %URL-enkooderin luoma merkki saattaa joutua syöttämään koodin uudelleen, kun tuloksena oleva merkkijono välitetään muiden järjestelmien läpi (esim. SQL :ssä se on mallielementti).
Tästä syystä URL-osoitteelle on muokattu Base64 , jossa merkkitäytöstä =ja symboleista ei käytetä ja ne korvataan +ja vastaavasti . Siksi URL-koodaajien/dekooderien käyttö ei ole enää tarpeen, eikä sillä ole vaikutusta koodatun arvon pituuteen, jolloin sama koodattu muoto jää ennalleen käytettäväksi relaatiotietokantoissa, verkkolomakkeissa ja objektitunnisteissa yleensä. URL- osoitteiden Base64-koodaus tunnistaa muunnelman, kun merkit ja korvataan merkillä ja ( RFC 3548 , osa 4). /*-+/-_
Toista muunnelmaa kutsutaan muunnetuksi Base64:ksi säännöllisille lausekkeille ja käyttötarkoituksille !ja -sen sijaan *ja -, korvaamaan vakio Base64 +/, koska molemmat +ja *voidaan varata säännöllisille lausekkeille (huomaa, että []yllä käytetty IRCu-variantti ei välttämättä toimi tässä yhteydessä).
On myös muita vaihtoehtoja, jotka käyttävät _ja -tai .ja _jos Base64-merkkijonoa käytetään yhdessä ohjelmien tunnisteiden kanssa tai .ja -käytettäväksi XML-nimitunnisteissa ( Nmtoken ) tai rajoitetummissa XML- tunnisteissa ( Name ). Joissakin tapauksissa URL-osoite käyttää Base58 :aa , joka ei käytä merkkejä ja . _:+/
Base58:a käytetään URL- osoitteiden koodaamiseen joissakin järjestelmissä, mikä eroaa Base64:stä siinä, että lopullisessa tekstissä ei ole merkkejä, jotka henkilö voi havaita epäselvästi. 0 (nolla), O (latinalainen iso kirjain o ), I (latinalainen iso kirjain i ), l (pieni latinalainen L ) jätetään pois . Myös + (plus)- ja / (vinoviiva) -merkit eivät sisälly, jotka URL -osoitetta koodattaessa voivat johtaa osoitteen virheelliseen tulkintaan.
Radix-64 on muunnelma binääritietojen Base64-koodauksesta tekstimuotoon, jota käytetään PGP :ssä . Se eroaa Base64:stä siinä, että 24-bittinen tarkistussumma lisätään loppuun.
Unix - pohjaiset käyttöjärjestelmät tallentavat salasanojen hajautusarvot / etc/passwd-tiedostoon käyttämällä B64 - koodausta . Se on samanlainen kuin Radix-64, mutta kohdistuspäätettä ei käytetä ja aakkosissa ei-aakkosmerkit sijoitetaan alkuun: . =./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Base64:lle on monia käyttötarkoituksia. Esimerkiksi Thunderbird ja Mozilla Suite käyttivät Base64:ää salasanojen piilottamiseen POP3 :ssa . Base64:ää voidaan käyttää salaisuuksien piilottamiseen ilman salausavainten hallintaa , mutta tämä lähestymistapa on täysin epävarma eikä sitä suositella.
Roskapostinlukijat , jotka eivät pura viestejä Base64:ään, jäävät usein huomaamatta, koska tällaiset viestit näyttävät riittävän satunnaisilta, jotta ne voidaan luulla roskapostiksi . Roskapostittajat käyttävät tätä roskapostin perustyökalujen ohittamiseen.
Tätä standardia käytetään JPEG- ja PNG-kuvien koodaamiseen, niiden lisäämiseen FB2 -e-kirjoihin [1] .
Jotkut sovellukset käyttävät Base64-koodausta pienten kuvien lähettämiseen pitkien tekstiviestien [2] kautta .
sarjoittaminen | Digitaalisten tietomuotojen|
---|---|
Teksti | |
Internet ja tietoliikenne |
|
Media | |
muu |