Base64 kódolás és dekódolás
Alakítson szöveget vagy fájlt Base64-re, vagy fejtse vissza a Base64-et olvasható szöveggé. Az Unicode-karaktereket helyesen kezeli, az URL-biztos ábécé egy kattintással elérhető, a dekódolás pedig mindkét ábécét elfogadja, kitöltéssel vagy anélkül.
0 karakter · 0 szó · 0 sor
0 karakter · 0 szó · 0 sor
Teljes egészében ebben a böngészőlapon fut. A szöveget soha nem töltjük fel és nem tároljuk.
A Base64 ábécé
Index → karakter az RFC 4648 szerint. A kiemelt utolsó kettő az URL-biztos változatban eltér: a 62 + vagy -, a 63 / vagy _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Mekkora lesz a kimenet
Minden 3 bemeneti bájtból 4 karakter lesz; az 1 vagy 2 bájtos utolsó csoportot a szabványos Base64 =-lel tölti ki, az URL-biztos forma kitöltés nélkül hagyja.
| Bemenet | Bájtok | Szabványos | URL-biztos | Hossz |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Mire való a Base64
A Base64, amelyet az RFC 4648 definiál, tetszőleges bájtokat ír le 64 nyomtatható ASCII karakterrel: A–Z, a–z, 0–9, + és /. Minden három bájtos (24 bites) csoportot négy 6 bites számra bont, és mindegyik szám kiválaszt egy karaktert az ábécéből. Ha a bemenet hossza nem többszöröse a háromnak, az utolsó csoportot egy vagy két = jellel egészíti ki. Az eredmény mindig körülbelül 33%-kal nagyobb a bemenetnél: 3 bájtonként 4 karakter.
Azért létezik, mert sok csatornát szövegre terveztek. Az e-mail (MIME), a HTML-ben és CSS-ben használt data: URL-ek, a képeket vagy tanúsítványokat hordozó JSON-mezők és a HTTP Basic hitelesítési fejlécek mind Base64-et használnak a bináris adatok biztonságos továbbításához. Nem titkosítás, semmit sem rejt el; a visszafejtéshez nincs szükség kulcsra.
Az Unicode és az URL-biztos változat
A Base64 bájtokat kódol, nem betűket, ezért a szöveget először bájtokká kell alakítani. Az eszköz mindig UTF-8-at használ, ezt a kódolást használja a web: az é két bájt, egy emoji négy. A böngésző beépített btoa függvénye önmagában hibát dob minden U+00FF feletti karakternél, ezért buknak el az egyszerű kódolók ékezetes betűknél és emojiknál; itt a szöveg előbb a TextEncoderen megy át, a dekódolás pedig TextDecoderrel fordítja vissza. Ha a dekódolt bájtok nem érvényes UTF-8-ak (kép, zip-fájl), az eszköz értelmezhetetlen szöveg helyett hexadecimálisan jeleníti meg őket.
A szabványos Base64 a + és / jeleket használja, amelyeknek az URL-ekben és fájlnevekben jelentésük van. Az RFC 4648 5. szakaszának URL-barát ábécéje ezeket - és _ jelekre cseréli, a kitöltést pedig általában elhagyják. A JSON Web Tokenek pontosan ezt a formát használják. A dekódoló mindkét ábécét és a hiányzó kitöltést is elfogadja, így bármelyiket beillesztheti.
Fájlok és képek kódolása
Válasszon ki egy fájlt, és az eszköz helyben beolvassa a FileReaderrel, majd visszaadja a Base64 értékét vagy egy teljes data: URL-t a fájl MIME-típusával, amelyet közvetlenül beilleszthet egy img címkébe vagy CSS-háttérbe. A beágyazott képek megspórolnak egy HTTP-kérést, de harmadával nagyobbak lesznek, és külön nem gyorsítótárazhatók, ezért inkább kis ikonokhoz valók, mint fotókhoz. Előnézettel és kész HTML- és CSS-részletekkel ellátott képekhez használja a Kép Base64-be eszközt.
Gyakori kérdések
- Miért hosszabb a Base64 kimenet, mint a bemenet?
- Minden 3 bájtból 4 karakter lesz, így a kimenet a bemenet méretének körülbelül 4/3-a, plusz legfeljebb két kitöltő karakter. A nem ASCII szöveg még hosszabb, mert az UTF-8 karakterenként két-négy bájtot használ.
- Mit jelentenek a végén lévő = jelek?
- Kitöltés. Ezek teszik néggyel osztható hosszúvá a kimenetet, amikor a bemenet hossza nem osztható hárommal. Egy = azt jelenti, hogy az utolsó csoportban két bájt volt, két = pedig azt, hogy egy bájt.
- Miért hiúsul meg a dekódolás érvénytelen karakter hibával?
- A bemenet az ábécén kívüli karaktert tartalmaz, például szóközt egy szó belsejében, idézőjelet vagy URL-kódolásból származó %-jelet. A sortöréseket és a hiányzó kitöltést az eszköz elfogadja, más karaktereket nem.
- Biztonságos egy jelszót Base64-gyel kódolni?
- A Base64 semmilyen védelmet nem nyújt. A HTTP Basic hitelesítés a felhasználó:jelszó párost Base64-ben küldi, ezért csak HTTPS-en szabad használni. Titkok védelmére valódi titkosítást vagy hash-elést használjon.
- Mi a különbség a Base64 és a Base64url között?
- Csak két karakterben és a kitöltésben: a Base64url a + és / helyett - és _ jelet használ, az = jelet pedig általában elhagyja, így az eredmény escape-elés nélkül elhelyezhető URL-ekben és fájlnevekben.