Base64 kodeerija-dekodeerija - Tasuta võrgupõhine Base64 teisendamise tööriist
Tasuta base64 kodeerija-dekodeerija tööriist. Teisendage tekst Base64-sse või dekodeerige Base64 stringid koheselt. Toetab standardset ja URL-sõbralikku kodeeringut. Sisselogimine pole vajalik.
Base64 kodeerija/dekodeerija
Teisenda tekst Base64 kodeeringusse ja tagasi
Dokumentatsioon
Mis on Base64-kodeering?
Base64 võimaldab muuta mis tahes andmed, sealhulgas binaarandmed, näiteks pildid, lihttekstiks, mis koosneb ainult tähtedest, numbritest ja mõnest sümbolist. Base64-kodeerija teisendab andmed sellesse tekstivormi. Base64-dekooder muudab need algseteks andmeteks tagasi. Programmid kasutavad Base64-t binaarandmete turvaliseks edastamiseks süsteemides, nagu e-post või JSON, mis eeldavad lihtteksti.
Base64 kasutab 64 märgist koosnevat tähestikku:
- Suurtähed A–Z (26 märki)
- Väiketähed a–z (26 märki)
- Numbrid 0–9 (10 märki)
- Kaks sümbolit, tavaliselt
+ja/(2 märki)
Mõni süsteem kasutab väljundi lõpus täitemärgina ka võrdusmärki (=). Täide ei kuulu 64-märgilisse tähestikku; see lihtsalt täidab pikkuse.
Miks Base64 on olemas
Paljud vanemad tekstiprotokollid, sealhulgas e-post (SMTP) ja mõned HTTP osad, loodi 7-bitise ASCII-teksti edastamiseks. Need võivad rikkuda binaarbaite, näiteks JPEG-pildi sees olevaid baite. Base64 väldib seda, esitades iga baidi turvaliste ja prinditavate märkidena. Seetõttu edastatakse e-posti manused, veebilehtedele paigutatud pildid ja JSON-i sees olevad binaarväljad sageli esmalt Base64-vormingus.
Base64 ei ole tihendamine ega krüpteerimine. Kodeeritud väljund on alati sisendist suurem ning igaüks saab selle ilma parooli või võtmeta dekodeerida.
Kuidas seda tööriista kasutada
- Tippige või kleepige tekst sisendikasti.
- Valige teksti Base64-vormingusse teisendamiseks „Encode to Base64” või Base64-stringi tekstiks tagasi teisendamiseks „Decode from Base64”.
- Lülitage reaalajas teisendamine sisse, et väljund kirjutamise ajal automaatselt uueneks.
- Kopeerige tulemus kopeerimisnupu abil.
Tööriist loeb ja kirjutab standardset Unicode-teksti, seega kodeeritakse ja dekodeeritakse õigesti ka rõhumärkidega tähed, sümbolid ja emotikonid, mitte ainult lihtsad inglise tähed.
Kuidas Base64-kodeering töötab
Base64 teisendab iga 3 sisendbaiti (24 bitti) 4 väljundmärgiks, millest igaüks sisaldab 6 bitti, sest 24 jagatud 6-ga võrdub 4.
- Võtke sisendbaidid ja kirjutage need binaarkujul välja.
- Rühmitage bitid 24-bitisteks plokkideks (3 baiti).
- Jagage iga 24-bitine plokk neljaks 6-bitiseks osaks.
- Leidke iga 6-bitise arvu (0 kuni 63) vaste Base64-tähestikust ja kirjutage vastav märk üles.
Kui sisendi pikkus ei ole 3 kordne, on viimane plokk lühem. Kodeerija täidab selle nullbittidega ja lisab väljundisse =-märgid, et tulemus moodustuks endiselt 4 kaupa:
- Üks allesjäänud bait annab 2 Base64-märki ja
==. - Kaks allesjäänud baiti annavad 3 Base64-märki ja ühe
=.
Base64-kodeeringu näide
Sõna „Hello” kodeerimine:
- ASCII väärtused: 72, 101, 108, 108, 111
- Binaarkuju:
01001000 01100101 01101100 01101100 01101111 - Esimesed 3 baiti (24 bitti) jagatakse neljaks 6-bitiseks rühmaks:
010010 000110 010101 101100, mis on arvud 18, 6, 21, 44 → märgidS,G,V,s. - Ülejäänud 2 baiti (16 bitti) jagatakse kolmeks 6-bitiseks rühmaks, lisades lõppu 2 nullbitti:
011011 000110 111100, mis on arvud 27, 6, 60 → märgidb,G,8. - Kuna alles jäi 2 baiti, lisatakse lõppu üks
=. - Tulemus:
SGVsbG8=
Dekodeerimine pöörab need sammud ümber: iga märk teisendatakse tagasi oma 6-bitiseks arvuks, bitid ühendatakse jadaks ja see jada loetakse uuesti 8-bitiste baitidena.
Base64-kodeeringu pikkuse valem
⟡n⟡ baidi pikkuse sisendi korral on kodeeringu pikkus märkides:
encoded_length = 4 × ⌈n / 3⌉
kus ⌈x⌉ tähendab ümardamist üles lähima täisarvuni. See valem näitab, miks Base64-väljund on alati umbes kolmandiku võrra sisendist suurem: iga 3 sisendbaidi kohta tuleb 4 väljundmärki, mis tähendab 33% suurenemist.
Kus Base64-t kasutatakse
- E-posti manused (MIME). E-post loodi teksti jaoks, seega teisendatakse failimanused enne saatmist Base64-vormingusse, mistõttu on manustatud fail algsest umbes 33% suurem.
- Andme-URI-d. Väikesed pildid saab tekstina otse HTML-i või CSS-i sisse paigutada, näiteks
data:image/png;base64,iVBORw0KGgo..., vältides eraldi failipäringut. See sobib kõige paremini väikeste failide korral, sest suured failid paisutavad lehte ja neid ei saa eraldi vahemällu salvestada. - API-d ja JSON. JSON-il puudub loomulik viis binaarandmete hoidmiseks, seega kodeeritakse JSON-i API kaudu saadetavad binaarfailid sageli esmalt Base64-vormingusse.
- HTTP lihtautentimine. Päis
Authorizationkodeerib kasutajanime ja parooli Base64-vormingus, näiteksAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. See ei ole iseenesest turvaline; andmed võib lugeda igaüks, kes need kinni püüab, seega tuleks lihtautentimist kasutada ainult HTTPS-i kaudu. - JSON Web Tokenid (JWT). JWT kolm osa kodeeritakse Base64URL-iga, mis on URL-i sisse paigutamiseks sobiv variant.
- Binaarandmete salvestamine tekstina. Andmebaasid või konfiguratsioonifailid, mis aktsepteerivad ainult teksti, hoiavad binaarandmeid mõnikord Base64-stringina.
Base64 võrdlus teiste kodeeringutega
URL-i jaoks turvaline Base64 asendab standardmärgid + ja / märkidega - ja _, sest + ja / on URL-is erilise tähendusega. Seda kasutatakse JWT-de, URL-i päringuparameetrite ja failinimede puhul. See tööriist toodab standardse Base64-väljundi; URL-i jaoks turvaliseks vormiks teisendamiseks tuleb need kaks märki lihtsalt ära vahetada.
Base32 kasutab 32-märgilist tähestikku, seega sisaldab iga märk 5 bitti, mitte 6 bitti. See teisendab iga 5 baiti 8 märgiks, mille liiasus on 60% (8 ÷ 5 = 1,6), võrreldes Base64 33%-lise liiasusega. Base32 valitakse siis, kui väljund tuleb käsitsi sisestada või telefoni teel ette lugeda, sest see väldib suur- ja väiketähtede segamist ning kergesti segiaetavaid märke.
Kuueteistkümnendsüsteem kasutab 16 märki (0–9, A–F) ja vajab iga baidi kohta 2 märki, kahekordistades mahu (100% liiasus). Seda kasutatakse sageli räside, värvide ja MAC-aadresside kuvamiseks, kui loetavus on kompaktsest suurusest tähtsam.
Millal Base64-t mitte kasutada
Base64 suurendab mahtu ja protsessori koormust, seega ei sobi see hästi üle võrgu saadetavatele suurtele failidele; binaarandmete otse saatmine on väiksem ja kiirem. Sellele ei tohi kunagi tugineda tundliku teabe, näiteks paroolide või API-võtmete varjamisel, sest dekodeerimiseks pole saladust vaja. Suurte failide salvestamiseks on andmebaasi binaarveeru tüüp või failisalvestusteenus tavaliselt parem kui pikk Base64-string tekstiväljal.
Levinud vead
- UTF-8 teisenduse vahelejätmine. Rõhumärkidega tähtede või emotikonidega teksti kodeerimine ilma seda esmalt UTF-8 baitideks teisendamata võib väljundit rikkuda.
- Täitemärkide eemaldamine. Mõni süsteem eemaldab lõpus olevad
=-märgid. Enamik dekoodereid töötab endiselt, kui stringi pikkus täidetakse tagasi 4 kordseks, kuid kõik dekooderid seda ei aktsepteeri, seega on täitemärgid turvalisem alles jätta. - Üle jäänud reavahetused. Vanemad MIME-põhised kodeerijad lisavad iga 76 märgi järel reavahetuse; enamik tänapäevaseid dekoodereid eeldab üht katkematut stringi ilma nendeta.
- Variantide segiajamine. Standardne Base64 ja URL-i jaoks turvaline Base64 kasutavad tähestiku samas kahes kohas erinevaid märke; vale variandiga dekodeerimisel saadakse vigased andmed või veateade.
Korduma kippuvad küsimused
Kas Base64 on krüpteerimise vorm? Ei. See on pööratav tekstikodeering, mitte krüpteerimine. Igaüks saab Base64-stringi kohe ilma paroolita dekodeerida. Kui andmed peavad jääma salajaseks, kasutage krüpteerimisalgoritmi, näiteks AES-i.
Miks Base64 muudab andmed suuremaks? Sest iga bittide rühm kasutab tervet märki ainult 6 biti kandmiseks, samal ajal kui töötlemata bait sisaldab 8 bitti. 3 baidi (24 biti) teisendamine 4 märgiks tähendab, et väljund on 4/3 ehk umbes 33% sisendist suurem.
Kas Base64-ga saab kodeerida pilte ja muid binaarfaile? Jah. Mis tahes binaarfaili, sealhulgas pilte, PDF-e ja helifaile, saab Base64-vormingusse kodeerida ja bait-baidilt tagasi dekodeerida. Seda kasutatakse sageli HTML-i või CSS-i sisse paigutatud väikeste piltide puhul, kuid suurte failide jaoks on see halb valik.
Mis vahe on Base64-l ja Base64URL-il?
Base64URL asendab standardmärgid + ja / märkidega - ja _, mistõttu saab tulemuse ilma täiendava paokodeeringuta turvaliselt URL-i või failinime paigutada. JWT-d kasutavad sel põhjusel Base64URL-i.
Miks annab minu Base64-string dekodeerimisel „invalid” veateate?
Kõige levinumad põhjused on märgid, mis ei kuulu Base64-tähestikku, näiteks URL-i jaoks turvalises variandis kasutatavad - ja _, või string, mille pikkus on ühest võrra suurem kui 4 kordne. Sellise pikkusega kehtivat Base64-stringi ei ole. Dekodeerimine ebaõnnestub ka siis, kui dekodeeritud baidid ei moodusta kehtivat UTF-8-teksti. See tööriist eirab stringi sees olevaid tühikuid ja reavahetusi ning dekodeerib ka stringi, mille lõpus olev =-täide on eemaldatud.
Kust Base64 pärineb? See tehnika pärineb 1980. aastate varastest skeemidest, mille abil saadeti binaarandmeid ainult teksti edastavate meilisüsteemide kaudu, ning see standardiseeriti ametlikult MIME osana dokumendis RFC 2045 aastal 1996. Base64, Base32 ja Base16 praegune viitespetsifikatsioon on RFC 4648.