GettyImages 1134691885 57fb324e5c2848dabfaffa98894329d1

Base64-koodaus on prosessi, jossa binääridata muunnetaan ASCII-merkkijonomuotoon muuntamalla binaaridata 6-bittiseksi merkkiesitykseen. Base64-koodausmenetelmää käytetään, kun binaaridataa, kuten kuvia tai videoita, lähetetään järjestelmien kautta, jotka on suunniteltu lähettämään tietoja vain tekstimuodossa (ASCII).

Miksi Base64-koodausta käytetään?

Base64-koodauksen tarve johtuu ongelmista, joita syntyy, kun mediaa lähetetään tekstipohjaisiin järjestelmiin raakabinaarimuodossa. Koska tekstipohjaiset järjestelmät (kuten sähköposti) tulkitsevat binääridataa useiksi eri merkeiksi, mukaan lukien erikoiskomentomerkit, suuren osan siirtovälineelle lähetetyistä binääritiedoista nämä järjestelmät tulkitsevat väärin ja ne katoavat tai vahingoittuvat siirtoprosessin aikana.

Eräs tapa koodata tämän tyyppinen binääritieto tavalla, joka välttää tällaiset lähetysongelmat, on lähettää se tavallisena ASCII-tekstina Base64-koodatussa muodossa. Tämä on yksi MIME-standardin käyttämistä tekniikoista muun tiedon kuin pelkkää tekstiä lähettämiseen. Monet ohjelmointikielet, kuten PHP ja Javascript, sisältävät Base64-koodaus- ja dekoodaustoimintoja Base64-koodauksella lähetettyjen tietojen tulkitsemiseksi.

Base64-koodauslogiikka

Base64-koodaus jakaa binääritiedot 6-bittisiksi 3 täyden tavun segmenteiksi ja esittää ne tulostettavina merkeinä ASCII-standardissa. Se tekee sen käytännössä kahdessa vaiheessa. Ensimmäinen askel on jakaa binäärimerkkijono 6-bittisiksi lohkoiksi. Base64 käyttää vain 6 bittiä (vastaa 2^6 = 64 merkkiä) varmistaakseen, että koodattu data on tulostettavissa ja luettavissa. Mitään ASCII:n erikoismerkkejä ei käytetä. 64 merkkiä (siis nimi Base64) ovat 10 numeroa, 26 pientä kirjainta, 26 isoa kirjainta sekä plusmerkki (+) ja vinoviiva (/). Siellä on myös 65. hahmo, joka tunnetaan nimellä a polku, joka on yhtäläisyysmerkki (=). Tätä merkkiä käytetään, kun binääridatan viimeinen segmentti ei sisällä kaikkia 6 bittiä.

Esimerkki Base64-koodauksesta

Tarkastellaan esimerkiksi kolmea ASCII-numeroa 155, 162 ja 233. Nämä kolme numeroa muodostavat binäärivirran 100110111010001011101001. Binääritiedosto, kuten kuva, sisältää binäärivirran, joka kestää kymmeniä tai satoja nollia ja tuhansia. . Base64-kooderi aloittaa jakamalla binaarivirran kuuden merkin ryhmiin: 100110 111010 001011 101001. Jokainen näistä ryhmistä muuttuu luvuiksi 38, 58, 11 ja 41. Kuuden merkin binäärivirta muuntaa tai perusbinäärivirran 2) desimaalimerkkeihin (kanta-10) neliöimällä mikä tahansa arvo, jota edustaa 1 binäärisekvenssissä, sen sijaintineliön kanssa. Alkaen oikealta ja siirryttäessä vasemmalle ja alkaen nollasta, binäärivirran arvot edustavat 2^0, sitten 2^1, sitten 2^2, sitten 2^3, sitten 2^4 ja sitten 2^5. Tässä on toinen tapa tarkastella sitä. Vasemmalta jokaisen paikan arvo on 1, 2, 4, 8, 16 ja 32. Jos binääriluvussa on 1, lisää tämä arvo; jos korttipaikassa on 0, et. Binäärimerkkijono 100110 muuntaa desimaaliluvun 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. Base64-koodaus ottaa tämän binäärimerkkijonon ja jakaa sen 6-bittisiksi arvoiksi 38, 58, 11 ja 41. Lopuksi nämä luvut muunnetaan ASCII-merkeiksi Base64-koodaustaulukon avulla. Tämän esimerkin 6-bittiset arvot muunnetaan ASCII-merkkijonoksi m6Lp† Base64-muunnostaulukon käyttäminen:

  • 38 on m
  • 58 on 6
  • 11 on L
  • 41 on s

Tätä kaksivaiheista prosessia sovelletaan koko binäärimerkkijonoon, joka on koodattu. Sen varmistamiseksi, että koodatut tiedot voidaan tulostaa oikein ja että ne eivät ylitä postipalvelimen rivin pituusrajoitusta, lisätään uusia rivimerkkejä, jotta rivin pituus pysyy alle 76 merkin. Rivinvaihtomerkit on koodattu kuten kaikki muutkin tiedot. Base64-koodauksen koko tarkoitus, täytön lisäämisestä 3-tavuisten binäärisegmenttien säilyttämiseksi binaarista tekstiksi muuntamiseen Base64-taulukon avulla, on säilyttää lähetetyn binääriinformaation eheys.

Base64-koodaustaulukko

Seuraava taulukko kääntää kaikki Base64-koodauksessa käytetyt 64 merkkiä.

Base64-koodaustaulukko
Missä Hiiltyä Missä Hiiltyä Missä Hiiltyä Missä Hiiltyä
0 A 16 K 32 G 48 kenen kanssa
1 B 17 R 33 huh 49 X
2 C 18 s 34 l 50 Joo
3 d 19 t 35 J 51 z
4 E 20 sinä 36 k 52 0
5 f 21 V 37 minä 53 1
6 G 22 W 38 m 54 2
7 huh 23 X 39 N 55 3
8 l 24 Joo 40 O 56 4
9 J 25 z 41 p 57 5
10 k 26 a 42 K 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 sinä 62
15 p 31 f 47 v 63

Ratkaise loppupeli

Salausprosessin lopussa saattaa ilmetä ongelma. Jos alkuperäisen tiedon koko tavuina on kolmen kerrannainen, kaikki toimii hyvin. Jos ei, voi olla tyhjiä tavuja. Oikea koodaus vaatii täsmälleen 3 tavua binaaridataa. Ratkaisu on lisätä tarpeeksi tavuja arvolla 0 3 tavun ryhmän luomiseksi. Kaksi tällaista arvoa lisätään, jos data tarvitsee yhden ylimääräisen datatavun, yksi lisätään kahdelle ylimääräiselle tavulle. Näitä keinotekoisia perässä olevia nollia ei tietenkään voida koodata käyttämällä alla olevaa koodaustaulukkoa. Ne on esitettävä 65. merkillä. Base64-täytemerkki on yhtäsuuruusmerkki (=) ja se sijoitetaan koodatun tiedon loppuun.

Por Markus