Base64 kódoló és dekódoló
Írjon be szöveget vagy válasszon fájlt, és azonnal látja Base64 alakban. Visszafelé is működik: a Base64-ből visszakapja a szöveget, a képet vagy más fájlt.
Az eredmény fájl, nem szöveg
A dekódolt adat nem olvasható szöveg, de a fájlt letöltheti.
Az eszköz használata
Hogyan kódolhat és dekódolhat Base64-et
- 1 Felül válassza ki, hogy szöveggel vagy fájllal dolgozik. A szöveget kódolhatja és dekódolhatja is. A fájlt, például egy képet vagy PDF-et, Base64-be vagy egyenesen data URI-ba kódolhatja.
- 2 Szövegnél válassza a Kódolás vagy a Dekódolás lehetőséget, és illessze be a szöveget. Az eredmény már gépelés közben megjelenik.
- 3 Az eredményt a Másolás gombbal másolhatja ki. A Csere gombbal áthelyezheti a bemenetbe, és megfordíthatja az irányt, például ellenőrzéshez.
Amit az eszköz magától elvégez
- dekódoláskor felismeri a szokásos Base64-et és a base64url-t is, és pótolja a végéről hiányzó = jeleket
- beolvassa a teljes data URI-t a fájltípussal együtt, a szóközöket és a sortöréseket pedig figyelmen kívül hagyja
- felismeri a képet, a PDF-et vagy az archívumot, képnél előnézetet mutat, és letöltést kínál
- a nem UTF-8 kódolású szöveget megpróbálja a régebbi Windows-1250 kódolással olvasni, és figyelmeztet rá
- szöveg kódolásakor az eredmény alatt a webcímekhez és JWT-hez való base64url változatot is megmutatja
- mindent közvetlenül az Ön böngészőjében dolgoz fel, semmi sem kerül elküldésre a szerverre
Hogyan alakíthat át képet Base64-be és vissza
A Base64-et leggyakrabban képeknél használják. Egy kis képet kódolhat, és közvetlenül a HTML-be vagy a CSS-be illesztheti, külön fájl nélkül. Ha pedig egy képet Base64 karakterláncként kap, például egy API-tól, itt visszaalakíthatja fájllá, és elmentheti.
Képből Base64
- 1 Az eszköz tetején váltson a Fájl módra, és válasszon egy PNG, JPG, GIF, WebP vagy SVG képet.
- 2 Válassza a Data URI formátumot, ha HTML-be vagy CSS-be szánja, illetve a Base64 formátumot API-hoz és JSON-höz.
-
3
Másolja ki az eredményt, és illessze be az
srcattribútumba, abackgroundCSS-tulajdonságba vagy a saját kódjába.
Base64-ből kép vagy PDF
- 1 Váltson a Szöveg módra, és válassza a Dekódolás lehetőséget.
- 2 Illessze be a Base64 karakterláncot vagy a teljes data URI-t. Az eszköz a tartalom alapján felismeri, hogy PNG, JPEG, GIF, WebP vagy PDF fájlról van-e szó.
- 3 Képnél előnézet jelenik meg. A Fájl letöltése gombbal a megfelelő kiterjesztéssel mentheti el.
Hogyan olvasható el egy JWT token
A JWT token egyetlen hosszú karakterláncnak tűnik, valójában azonban három, ponttal elválasztott részből áll. Az első kettő egyszerű, base64url-be kódolt JSON, így kulcs nélkül is elolvashatja őket. Minden részt külön illesszen be az eszközbe:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSmFuYSIsImV4cCI6MTc2NzIyNTYwMH0.alairas
- Fejléc
-
{"alg":"HS256","typ":"JWT"}az aláírás algoritmusa és a token típusa
- Adatok
-
{"sub":"123","name":"Jana","exp":1767225600}a felhasználó azonosítója, neve és a lejárat ideje
- Aláírás
-
alairasbináris aláírás, amelyet a szerver ellenőriz, nem szöveg
Az exp érték a lejárat ideje 1970. január 1. óta eltelt másodpercekben, itt pontosan 2026. január 1., éjfél UTC. A token adatait bárki elolvashatja, akinél a token van, ezért soha ne tegyen bele jelszót vagy más titkos információt.
Hogyan nyerhető ki a melléklet az e-mail forráskódjából
Az üzenet forráskódjában minden melléklet hosszú Base64 blokként szerepel a Content-Transfer-Encoding: base64 fejléc után. A forráskódot a Gmailben az Eredeti megjelenítése, az Outlookban az Üzenet forrásának megtekintése paranccsal nyithatja meg. Másolja ki a blokkot a fejlécek nélkül, illessze be ide, válassza a Dekódolás lehetőséget, és töltse le a fájlt. Akkor jön jól, ha a levelezőprogram nem tudja megnyitni a mellékletet, vagy letiltotta.
Véletlen kulcs Base64-ben
Az API-khoz, titkosításhoz vagy aláíráshoz használt titkos kulcsokat gyakran Base64-ben írt véletlen bájtokként adják meg. A Laravel például az alkalmazáskulcsot APP_KEY=base64: formában, 32 véletlen bájtként tárolja. Kulcsot itt is generálhat, kriptográfiailag biztonságos generátorral, közvetlenül a böngészőjében.
Terminálban ugyanezt az openssl rand -base64 32 parancs végzi el. A generált kulcsot sehová nem küldjük el, és nem is mentjük.
Minden a Base64-ről
Mi a Base64, és mire használják
A Base64 segítségével bármilyen adat, akár egy kép vagy PDF is leírható mindössze 64 hétköznapi karakterrel: kis- és nagybetűkkel, számjegyekkel, valamint a + és / jellel. Az így leírt adat mindenhová továbbítható, ahol csak szöveg engedélyezett, például e-mail-mellékletekben, API-k JSON-válaszaiban, HTML-ben vagy CSS-ben. Minden három bájtból négy karakter lesz, ezért az eredmény nagyjából egyharmaddal hosszabb az eredeti adatnál.
- karakter a Base64 ábécében
- 64
- három bájtból négy karakter lesz
- 3 → 4
- ennyivel hosszabb az eredmény
- +33%
- a Base64-et meghatározó szabvány
- RFC 4648
Példák
Így néznek ki a szokásos szövegek kódolás előtt és után:
| Bemenet | Base64 | |
|---|---|---|
| Rövid szöveg | Szia |
U3ppYQ== |
| Ékezetes szöveg | Jó napot |
SsOzIG5hcG90 |
| HTTP Basic bejelentkezés | nev:jelszo |
bmV2OmplbHN6bw== |
Hogyan működik a Base64 lépésről lépésre
- 1 Először a szöveg bájtokká alakul. Az ékezet nélküli betűk UTF-8-ban egy bájtot foglalnak, az á, az é vagy az ő kettőt, az emojik pedig négyet.
- 2 Minden bájt nyolc bitből áll. A bitek egymás után sorakoznak, majd hatos csoportokra oszlanak.
- 3 Minden hatbites csoport egy 0 és 63 közötti szám, amelynek a Base64 ábécében egy karakter felel meg: a 0 az A, a 26 az a, az 52 a 0, a 62 a +, a 63 pedig a /.
- 4 Ha az utolsó csoporthoz nem marad elég bit, nullákkal egészül ki. Az eredmény végére ezután = jelek kerülnek, hogy a hossza osztható legyen néggyel.
Hogyan lesz három bájtból négy Base64 karakter
A Base64 hármas bájtcsoportokban dolgozza fel a bemenetet. Az M, a és n betűk ASCII-kódja 77, 97 és 110.
Minden bájt 8 bites, ez összesen 24 bit.
A 24 bitet 4 darab 6 bites csoportra osztja. Minden csoport egy 0 és 63 közötti szám.
Minden számot a 64 karakteres ábécé egy karaktere helyettesít. 3 bájtból 4 karakter lesz, ezért a Base64 nagyjából egyharmaddal hosszabb.
Ha az utolsó csoport nem teljes, például a „Ma” szövegnél, hiányzik a harmadik bájt.
Csak 16 bit van, ez nem elég három teljes 6 bites csoporthoz.
A harmadik csoportot két nulla bit egészíti ki 6 bitre. A negyedikre már nem maradt bit.
A hiányzó csoport helyére = jel kerül. Ebből tudja a dekóder, hány bájt volt valójában a végén.
A bemutató a szöveg első hat bájtját bontja fel.
| Karakter | Bájt | Bitek |
|---|---|---|
| S | 83 | 01010011 |
| z | 122 | 01111010 |
| i | 105 | 01101001 |
| a | 97 | 01100001 |
| Hatbites csoport | Érték | Base64 karakter |
|---|---|---|
| 010100 | 20 | U |
| 110111 | 55 | 3 |
| 101001 | 41 | p |
| 101001 | 41 | p |
| 011000 | 24 | Y |
| 010000 | 16 | Q |
| = | ||
| = |
= U3ppYQ==
A Base64 ábécé (karaktertáblázat)
A Base64 pontosan 64 karaktert használ. Mindegyik egy 0 és 63 közötti számnak, vagyis egy hatbites csoportnak felel meg. Az = jel nem része az ábécének, csak a végén egészíti ki a hosszt.
- 0 A
- 1 B
- 2 C
- 3 D
- 4 E
- 5 F
- 6 G
- 7 H
- 8 I
- 9 J
- 10 K
- 11 L
- 12 M
- 13 N
- 14 O
- 15 P
- 16 Q
- 17 R
- 18 S
- 19 T
- 20 U
- 21 V
- 22 W
- 23 X
- 24 Y
- 25 Z
- 26 a
- 27 b
- 28 c
- 29 d
- 30 e
- 31 f
- 32 g
- 33 h
- 34 i
- 35 j
- 36 k
- 37 l
- 38 m
- 39 n
- 40 o
- 41 p
- 42 q
- 43 r
- 44 s
- 45 t
- 46 u
- 47 v
- 48 w
- 49 x
- 50 y
- 51 z
- 52 0
- 53 1
- 54 2
- 55 3
- 56 4
- 57 5
- 58 6
- 59 7
- 60 8
- 61 9
- 62 +
- 63 /
Miért van a végén = vagy ==
A Base64 hármasával dolgozza fel a bájtokat. Ha a végén ennél kevesebb marad, a hiányzó helyet = jel jelöli. Egy megmaradt bájtnál két = jel kerül a végére, két bájtnál egy, háromnál egy sem. Egyes rendszerek, például a JWT, elhagyják az = jeleket, mert a dekódoló magától ki tudja számolni a hosszt.
Mekkora lesz a Base64
Minden három bájtból négy karakter lesz, így a Base64 hossza 4 × ⌈n ÷ 3⌉ karakter, ahol n a bájtok száma, a zárójel pedig felfelé kerekítést jelent. Az eredmény tehát nagyjából 33%-kal hosszabb. E-mailekben a Base64-et ráadásul 76 karakteres sorokra tördelik, és minden sort két karakter, a CR LF zár le, ezért a melléklet mérete nagyjából 37%-kal nő. Visszafelé is számolhat: a d hosszúságú Base64 3 × d ÷ 4 bájtot tartalmaz, amiből le kell vonni a végén lévő = jelek számát.
| Eredeti fájl | Base64 | Base64 e-mailben (MIME) |
|---|---|---|
| 1,00 KB | 1,34 KB | 1,37 KB |
| 10,00 KB | 13,34 KB | 13,69 KB |
| 100 KB | 133 KB | 137 KB |
| 1,00 MB | 1,33 MB | 1,37 MB |
| 10,00 MB | 13,33 MB | 13,68 MB |
A Base64 változatai
Minden változat ugyanazt az első 62 karaktert használja. Az utolsó két karakterben, a végi kiegészítésben és abban különböznek, hogy az eredményt sorokra tördelik-e.
| Változat | 62. és 63. karakter | Kiegészítés = | Sorok | Felhasználás |
|---|---|---|---|---|
| Szabványos Base64 (RFC 4648) | + / | igen | tördelés nélkül | API, JSON, data URI |
| base64url (RFC 4648) | - _ | általában nem | tördelés nélkül | JWT, OAuth, webcímek, fájlnevek |
| MIME (RFC 2045) | + / | igen | 76 karakterenként | e-mail-mellékletek |
| PEM (RFC 7468) | + / | igen | 64 karakterenként | tanúsítványok és kriptográfiai kulcsok |
Base64 és base64url
A szokásos Base64 tartalmazza a +, / és = jeleket, amelyeknek a webcímekben saját jelentésük van. A base64url változat helyettük a - és _ jelet használja, a végén lévő = jeleket pedig elhagyja. Ezt használják például a JWT tokenek, az OAuth és a webcímekben szereplő aláírások.
Kép data URI-ként
A data URI a fájlt közvetlenül a HTML-be vagy a CSS-be illeszti, például <img src="data:image/png;base64,…">. Kis ikonokhoz jól jön, mert a böngészőnek nem kell külön letöltenie őket. Nagyobb képeknél nem éri meg: egyharmaddal nagyobbak, és a böngésző nem tudja őket külön gyorsítótárazni. E-mailbe ne tegyen data URI-t, a Gmail nem jeleníti meg az ilyen képeket, a spamszűrők pedig gyakran gyanúsnak tartják őket.
Hol használják a Base64-et a gyakorlatban
Képek közvetlenül HTML-ben és CSS-ben
Egy kis ikont vagy logót data URI-ként illeszthet be az oldalba, külön fájl és újabb szerverkérés nélkül.
<img src="data:image/png;base64,iVBORw0KGgo…" alt="Logo">
.ikon {
background: url("data:image/svg+xml;base64,PHN2Zy…");
}
E-mail-mellékletek
Az e-mail csak szöveget továbbít, ezért minden mellékletet Base64-be kódolnak. A melléklet fejléce megmondja a levelezőprogramnak, hogyan kell dekódolnia.
Content-Type: application/pdf; name="szamla.pdf"
Content-Transfer-Encoding: base64
JVBERi0xLjcKJeLjz9MK…
Bejelentkezés HTTP Basic hitelesítéssel
A böngésző kettősponttal összefűzi a felhasználónevet és a jelszót, majd Base64-ben küldi el. Ez nem titkosítás, az adatokat csak a HTTPS-kapcsolat védi.
Authorization: Basic bmV2OmplbHN6bw==
JWT tokenek
A token három, ponttal elválasztott részből áll: fejlécből, adatokból és aláírásból. Az első kettő base64url-be kódolt JSON, így bárki elolvashatja. Az aláírás garantálja, hogy senki nem módosította őket, de nem rejti el őket.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSmFuYSJ9.alairas
Tanúsítványok és kulcsok
Az SSL-tanúsítványokat és a privát kulcsokat Base64-ként tárolják a BEGIN és END sorok között. Ezt a formátumot PEM-nek nevezik.
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIE…
-----END CERTIFICATE-----
Fájlok API-kban és JSON-ben
A JSON nem tud bináris adatot tárolni, ezért az API-k a fájlokat Base64 karakterláncként küldik egy közönséges szöveges mezőben.
{
"nev": "szerzodes.pdf",
"tartalom": "JVBERi0xLjcKJeLjz9MK…"
}
Titkos adatok a Kubernetesben
A Kubernetes a Secret objektumok értékeit Base64-ként tárolja, hogy bináris adat is lehessen bennük. Ez azonban nem védelem: aki hozzáfér az objektumhoz, egyszerűen dekódolja az értéket. Valódi védelmet csak a tárolt adatok titkosítása és a hozzáférési jogosultságok nyújtanak.
apiVersion: v1
kind: Secret
data:
password: dGFqbmVoZXNsbw==
Hogyan ismerhető fel a fájl a Base64 eleje alapján
A legtöbb formátum jellegzetes bájtokkal kezdődik, ezért a Base64 alakja is mindig ugyanúgy kezdődik. Az első karakterekből így gyakran már dekódolás előtt kiderül, milyen fájlról van szó. A csillaggal jelölt sorok csak a leggyakoribb kezdetet mutatják, nem kötelező szabályt.
| A Base64 eleje | Fájltípus | MIME-típus |
|---|---|---|
iVBORw0KGg… | PNG | image/png |
/9j/… | JPEG | image/jpeg |
R0lGO… | GIF | image/gif |
UklGR… | RIFF (WebP, WAV, AVI) | image/webp, audio/wav |
PHN2Z… | SVG* | image/svg+xml |
JVBERi… | application/pdf | |
UEsDB… | ZIP, DOCX, XLSX | application/zip |
H4sI… | GZIP | application/gzip |
PD94bW… | XML* | application/xml |
ey… | JSON, JWT* | application/json |
A Base64 és más kódolások
Nem a Base64 az egyetlen módja annak, hogy bájtokat szövegként írjunk le. A többi kódolás vagy hosszabb, de könnyebben olvasható és átírható, vagy rövidebb, de kevésbé szokványos karaktereket használ.
| Kódolás | Karakterek | Növekedés | Jellemző felhasználás |
|---|---|---|---|
| Hex (Base16) | 0-9, A-F | 100% | hashértékek, színkódok, bájtok kiírása |
| Base32 | A-Z, 2-7 | 60% | kulcsok a kétlépcsős azonosításhoz (TOTP) |
| Base58 | 58 karakter, a 0, O, I és l nélkül | kb. 37% | kriptovaluta-címek, rövid azonosítók |
| Base64 | A-Z, a-z, 0-9, + / | 33% | mellékletek, data URI, API, JWT |
| Base85 (Ascii85) | 85 karakter | 25% | PDF, PostScript, bináris változások a Gitben |
A Base64 nem titkosítás
A Base64-et bárki dekódolhatja, kulcs nélkül is. Nem védi a jelszavakat, a személyes adatokat és a titkos kulcsokat, csak más formába írja át őket. A csalók viszont szívesen visszaélnek vele: adathalász e-mailekben és kártékony szkriptekben ezzel rejtik el a linkeket és a kódot az egyszerű szűrők elől. Ha valahol szokatlanul hosszú Base64 karakterláncba botlik, nyugodtan dekódolja itt, és nézze meg, mit tartalmaz. A dekódolás során semmi sem fut le.
A Base64 rövid története
-
1987
A kódolás először a PEM nevű biztonságos levelezési szabvány specifikációjában (RFC 989) jelent meg, printable encoding néven.
-
1992
A MIME szabvány (RFC 1341) az e-mail-mellékletekhez használta, bevezette a 76 karakteres sorokat, és a Base64 nevet adta neki.
-
2003
Az RFC 3548 az e-mailtől függetlenül, önállóan írta le a Base64-et, és kiegészítette egy webcímekhez és fájlnevekhez való változattal.
-
2006
Az RFC 4648 felváltotta az előző dokumentumot, és ma is ez van érvényben.
Fejlesztőknek
Base64 a programozásban és a parancssorban
Így kódolhatja és dekódolhatja a „Szia” szöveget a gyakori programozási nyelvekben. Az ékezetes szöveget mindig alakítsa előbb UTF-8 bájtokká, különben hibát vagy eltérő eredményt kap.
JavaScript
const base64 = btoa(String.fromCharCode(...new TextEncoder().encode('Szia')));
const text = new TextDecoder().decode(Uint8Array.from(atob(base64), (c) => c.charCodeAt(0)));
Önmagában a btoa('tűz') InvalidCharacterError hibával leáll, mert a btoa függvény csak Latin-1 karaktereket fogad el. A legújabb böngészők már a Uint8Array.prototype.toBase64() metódust is ismerik.
Node.js
Buffer.from('Szia', 'utf8').toString('base64');
Buffer.from('U3ppYQ==', 'base64').toString('utf8');
Buffer.from('Szia').toString('base64url');
A Node.js a base64url kódolást is ismeri, ehhez nincs szükség külön könyvtárra.
PHP
base64_encode('Szia');
base64_decode('U3ppYQ==', true);
A második, true paraméter hatására érvénytelen bemenetnél false az eredmény. Enélkül a PHP a nem megengedett karaktereket csendben átugorja.
Python
import base64
base64.b64encode('Szia'.encode()).decode()
base64.b64decode('U3ppYQ==').decode()
base64.urlsafe_b64encode(b'Szia')
Az Incorrect padding hiba azt jelenti, hogy a karakterlánc végéről hiányoznak az = jelek.
Java
Base64.getEncoder().encodeToString("Szia".getBytes(StandardCharsets.UTF_8));
new String(Base64.getDecoder().decode("U3ppYQ=="), StandardCharsets.UTF_8);
A base64url változathoz a Base64.getUrlEncoder(), e-mailekhez a Base64.getMimeEncoder() metódust használja.
C#
Convert.ToBase64String(Encoding.UTF8.GetBytes("Szia"));
Encoding.UTF8.GetString(Convert.FromBase64String("U3ppYQ=="));
Ugyanezek a metódusok a .NET-ben és a PowerShellben is működnek.
Linux és macOS
printf 'Szia' | base64
echo 'U3ppYQ==' | base64 -d
base64 < fajl.pdf > fajl.txt
Az echo parancs új sort fűz a szöveg végére, ezért kódoláshoz a printf vagy az echo -n parancsot használja. A macOS régebbi verziói a -d helyett a -D kapcsolót ismerik.
Windows PowerShell
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Szia'))
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('U3ppYQ=='))
[Convert]::ToBase64String([IO.File]::ReadAllBytes('fajl.pdf'))
A klasszikus parancssorban a certutil -encode fajl.pdf fajl.txt is működik, az eredményt azonban BEGIN és END sorok közé zárja.
Képek és SVG a kódban
Kép Base64-be JavaScriptben
const file = document.querySelector('input[type=file]').files[0];
const reader = new FileReader();
reader.onload = () => console.log(reader.result);
reader.readAsDataURL(file);
A readAsDataURL metódus kész data URI-t ad vissza a fájltípussal együtt, például data:image/png;base64,iVBORw0KGg….
Tipp SVG ikonokhoz
Az SVG szöveg, ezért ha CSS-be illeszti, nem kell Base64-be kódolnia. Elég az URL-kódolóval kódolni, például url("data:image/svg+xml,%3Csvg…"). Az eredmény általában rövidebb, és az ikont könnyen módosíthatja benne, például megváltoztathatja a színét. SVG esetén a Base64-nek csak akkor van értelme, ha a rendszer más formát nem fogad el.
Base64 fájl dekódolása parancssorban
Ha a Base64 egy fájlban van, például egy API-tól vagy egy naplóból, közvetlenül visszaalakíthatja az eredeti fájllá:
- Linux
base64 -d kep.txt > kep.png- macOS
base64 -d -i kep.txt -o kep.png- Windows (parancssor)
certutil -decode kep.txt kep.png- Windows PowerShell
[IO.File]::WriteAllBytes('kep.png', [Convert]::FromBase64String((Get-Content kep.txt -Raw)))- OpenSSL
openssl base64 -d -A -in kep.txt -out kep.png
Ha a fájl data URI fejléccel kezdődik, például data:image/png;base64,, előbb törölje ezt a részt. A certutil parancs a BEGIN és END sorokat tartalmazó fájlt is kezeli.
Gyakori hibák és javításuk
Az ékezetes betűk helyén ű és hasonló jelek jelennek meg
A szöveget UTF-8-ban kódolták, de Windows-1250-ként olvassa, vagy éppen fordítva. A tűz szó UTF-8-ban, Windows-1250-ként megjelenítve így néz ki: tűz. Ha a szöveg nem UTF-8, az eszköz megpróbálja Windows-1250-ként olvasni, és figyelmezteti erre.
InvalidCharacterError JavaScriptben
A btoa függvény csak Latin-1 karaktereket fogad el, ezért az ő, az ű vagy egy emoji esetén hibát jelez. A szöveget előbb alakítsa bájtokká a TextEncoder segítségével, ahogy a fenti példában.
Incorrect padding Pythonban
A JWT tokenből vagy webcímből származó Base64 végéről hiányoznak az = jelek. Pótolja őket, hogy a hossz osztható legyen néggyel. Ez az eszköz magától kiegészíti.
A + jelekből szóköz lett
Ha a Base64-et kódolás nélkül illeszti egy webcímbe, a szerver a + jelet szóköznek olvassa, és a dekódolás meghiúsul. Kódolja az értéket az URL-kódolóval, vagy használjon base64url-t.
Dekódolás után ismét Base64-et kap
A szöveget kétszer kódolták, például Szia → U3ppYQ== → VTNwcFlRPT0=. Dekódolja még egyszer: a Csere gombbal helyezze át az eredményt a bemenetbe, majd válassza újra a Dekódolás lehetőséget.
Nem jelenik meg a kép
A karakterlánc csonka, hiányzik az eleje, vagy kétszer szerepel benne a data URI kezdete. Vesse össze az első karaktereket a fenti táblázattal: a PNG-nek iVBORw0KGg, a JPEG-nek /9j/ karakterekkel kell kezdődnie.
Mikor érdemes Base64-et használni, és mikor nem
Érdemes
- kis ikonokhoz és néhány kilobájtos képekhez közvetlenül CSS-ben vagy HTML-ben
- bináris adatokhoz JSON-ben, XML-ben vagy konfigurációs fájlban
- kulcsokhoz, tokenekhez és aláírásokhoz, amelyeknek egyszerű szövegnek kell lenniük
- olyan rendszereken keresztüli továbbításhoz, amelyek csak szöveget kezelnek, például e-mailben
Nem érdemes
- nagy képekhez és videókhoz a weben, mert egyharmaddal nagyobbak lesznek, és a böngésző nem tudja őket külön gyorsítótárazni
- képekhez e-mailekben, mert a Gmail nem jeleníti meg őket
- fájlok tárolására bináris oszlopokkal (BLOB) rendelkező adatbázisban, ahol a Base64 egyharmaddal több helyet foglal
- jelszavak és bizalmas adatok védelmére, erre a titkosítás vagy a hashelés való
Fogalomtár
- Bit
- Az adat legkisebb egysége, értéke 0 vagy 1.
- Bájt
- Nyolc bitből álló csoport, vagyis egy 0 és 255 közötti szám.
- UTF-8
- A szöveg karaktereinek bájtokkal való leírási módja. Az ékezet nélküli betűk egy bájtot foglalnak, a magyar ékezetes betűk kettőt.
- Padding
- Az eredmény kiegészítése = jelekkel néggyel osztható hosszúságra.
- base64url
- A Base64 olyan változata, amely a + és / helyett a - és _ jelet használja, így webcímekben és fájlnevekben is használható.
- MIME
- Az e-mailek szabványa, amely a mellékletekhez Base64-et használ.
- Data URI
- Fájl leírása közvetlenül a szövegben, data:típus;base64,tartalom alakban.
- PEM
- Tanúsítványok és kulcsok formátuma: Base64 a BEGIN és END sorok között.
- RFC 4648
- A dokumentum, amely ma hivatalosan meghatározza a Base64, a Base32 és a Base16 kódolást.
Kapcsolódó eszközök
További eszközök fejlesztőknek: kódolás, hashek, azonosítók és formátumok.
GYIK
Mi a Base64?
Titkosítás a Base64?
Miért hosszabb a Base64 az eredeti szövegnél?
Mi a base64url, és mikor használjam?
+ és / helyett - és _ jelet használ, a végén lévő = jeleket pedig elhagyja. JWT tokenek, OAuth és URL-ben lévő aláírások használják. Dekódoláskor ez az eszköz automatikusan felismeri.
Hogyan dekódolhatok Base64-et képpé vagy PDF-fé?
Miért kapok hibát dekódoláskor?
+ / = jeleket tartalmazhatja, base64url esetén a - _ jeleket is. A szóközök és sortörések nem zavarnak. Hibát okoz minden más karakter vagy a hiányosan másolt karakterlánc. A JWT token három, ponttal elválasztott részből áll, ezért mindegyiket külön dekódolja.
Elküldésre kerül a szövegem vagy a fájlom egy szerverre?
Hogyan alakíthatok át egy képet Base64-be?
src attribútumba vagy CSS-be illesztheti. Néhány kilobájtos képekhez ideális, a nagyobbakat jobb külön fájlként hagyni.
Miért van a Base64 végén egy vagy két = jel?
Hogyan dekódolhatok egy JWT tokent?
Miért jelent meg a szöveg a Windows-1250 kódolásra figyelmeztetve?
Miért Base64-ben vannak a Kubernetes Secret értékei, ha ez nem titkosítás?
Hogyan generálhatok véletlen kulcsot Base64-ben?
openssl rand -base64 32 parancsot. Mindkettő kriptográfiailag biztonságos véletlenforrásból dolgozik. A programozási nyelvek szokásos véletlenszám-generátorait, például a Math.random() függvényt, ne használja titkos kulcsokhoz.