Gondolkoztam, hogyan dobhatnám fel egy kicsit az unalmas függvény gyakorlást, ekkor jutott eszembe, hogy általánosban mindig igyekeztünk titkosírást kitalálni. Utána néztem, hogyan lehetne ezt valamiféle függvénnyel megoldani. A következőtre leltem:
A Base64 egy kódolási eljárás, amelyet általában bináris
adat (például képek, fájlok) szöveges formátumba való átalakítására használnak.
A Base64 kódolás során az adatok biztonságosabban továbbíthatók olyan
protokollokon keresztül, amelyek nem kezelnek jól bináris adatokat, például
e-mail vagy URL-ek.
JavaScriptben két beépített függvényt használhatunk a Base64 kódolásra és
dekódolásra:
1.
btoa()
– "Binary to ASCII":
- Ez a függvény a szöveges adatot Base64 formátumba
kódolja.
- Csak karakterláncokat
fogad el, és a kódolt formátum egy ASCII-karakterlánc lesz.
2.
atob()
– "ASCII to Binary":
- Ez a függvény a Base64 kódolt szöveget
visszakódolja az eredeti formátumába.
- Ez is karakterláncot fogad el, és karakterláncot
ad vissza.
btoa() Függvény –
Kódolás
A btoa() függvény egy
szöveget Base64 formátumba kódol. Fontos megjegyezni, hogy a kódolandó szövegnek
ASCII karakterekből kell állnia, mivel a btoa()
nem tud Unicode karaktereket közvetlenül kezelni.
Szintaxis:
let encodedData = btoa(string);Példa:
let originalText = "Hello, World!";let encodedText = btoa(originalText);console.log(encodedText); // "SGVsbG8sIFdvcmxkIQ=="- Magyarázat:
A "Hello, World!" szöveget Base64 formátumba kódoljuk, amelynek
eredménye:
SGVsbG8sIFdvcmxkIQ==.
Unicode kezelés:
A btoa() függvény
alapértelmezetten nem támogatja a Unicode karaktereket, mivel azok nem ASCII
karakterek. Ha Unicode karakterekkel dolgozol, előbb megfelelően kell őket
átalakítani.
Unicode karakterek kódolásához:
function utf8_to_b64(str) { return btoa(unescape(encodeURIComponent(str)));} let unicodeText = "Üzenet";let encodedUnicodeText = utf8_to_b64(unicodeText);console.log(encodedUnicodeText); // "w5Z6ZW5ldA=="atob() Függvény –
Dekódolás
Az atob() függvény a
Base64 formátumban kódolt szöveget visszaalakítja az eredeti formátumba.
Szintaxis:
let decodedData = atob(base64String);Példa:
let encodedText = "SGVsbG8sIFdvcmxkIQ==";let decodedText = atob(encodedText);console.log(decodedText); // "Hello, World!"- Magyarázat:
A Base64 formátumban kódolt szöveget visszaalakítjuk az eredeti
"Hello, World!" szöveggé.
Unicode kezelés:
Ha az eredeti szöveg Unicode karaktereket tartalmaz, az atob() alapértelmezetten nem tudja
visszaalakítani azokat helyesen. Ebben az esetben az alábbi módon kell eljárni:
Unicode karakterek dekódolásához:
function b64_to_utf8(str) { return decodeURIComponent(escape(atob(str)));} let encodedUnicodeText = "w5Z6ZW5ldA==";let decodedUnicodeText = b64_to_utf8(encodedUnicodeText);console.log(decodedUnicodeText); // "Üzenet"Base64 használati esetek
1.
Adatok biztonságos továbbítása: Base64
kódolást gyakran használnak e-mailben vagy URL-ben történő adatátvitelhez,
mivel ezek a protokollok nem tudnak kezelni bináris adatokat.
2.
Képek és fájlok beágyazása: HTML
oldalon képeket és más fájlokat is Base64 formátumban tárolhatunk és
közvetlenül beágyazhatunk az oldalba, így nem kell külön fájlokat külső
forrásból letölteni.
Példa egy Base64-kódolt kép megjelenítésére:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Base64 Image">3.
Alapvető titkosítás: Bár nem
biztonságos titkosítási módszer, a Base64-t egyszerű adatvédelmi megoldásokhoz
is használják. Fontos azonban megjegyezni, hogy könnyen visszafejthető, tehát
nem alkalmas érzékeny adatok védelmére.
Összegzés
btoa(): A karakterlánc Base64 formátumba való kódolására szolgál, de csak ASCII karaktereket támogat.atob(): A Base64 formátum visszakódolására használjuk, és szintén csak ASCII karaktereket támogat.
Ha Unicode karakterekkel dolgozol, akkor szükséges az átalakítás a kódolás
és dekódolás előtt/után.
Ha bármi hasonlóra lelne valaki, ne tartsátok magatokban, osszátok meg velünk. :-)
Nincsenek megjegyzések:
Megjegyzés küldése