JavaScript | Кодировать / декодировать строку в Base64.

Опубликовано: 5 Января, 2022

Чтобы кодировать / декодировать строку в JavaScript, мы используем встроенные функции, предоставляемые JavaScript.

btoa ():
Этот метод кодирует строку в base-64 и использует символы «AZ», «az», «0-9», «+», «/» и «=» для кодирования предоставленной строки.

  • Синтаксис:
    window.btoa (строка)
    
  • Параметр:
    Строка: этот параметр является обязательным. Он определяет строку для кодирования.

atob ():
Этот метод декодирует строку в кодировке base-64, которая была закодирована методом btoa ().

  • Синтаксис:

    window.atob (строка)
    
  • Параметр:
    строка: этот параметр является обязательным. Он определяет строку, которая уже была закодирована методом btoa ().

Вот несколько примеров.
Пример-1: В этом примере строка «Это GeeksForGeeks» кодируется функцией btoa ().

<!DOCTYPE html>
< html >
< head >
< title >
JavaScript |
encode/decode a string to Base64.
</ title >
</ head >
< body style = "text-align:center;" >
< h1 style = "color:green;" >
GeeksForGeeks
</ h1 >
< p id = "GFG_UP" >
</ p >
< button onclick = "Geeks()" >
Encode
</ button >
< p id = "GFG_DOWN"
style = "color:green;" >
</ p >
< script >
var str = "This is GeeksForGeeks";
var up = document.getElementById("GFG_UP");
var down = document.getElementById("GFG_DOWN");
up.innerHTML = "Str = '" + str + "'";
function Geeks() {
down.innerHTML = window.btoa(str);
}
</ script >
</ body >
</ html >

Выход:

  • Перед нажатием на кнопку:
  • После нажатия на кнопку:

Пример-2: Этот пример декодирует строку «VGhpcyBpcyBHZWVrc0ZvckdlZWtz», закодированную функцией btoa (), с помощью функции atob () .

<!DOCTYPE html>
< html >
< head >
< title >
JavaScript | encode/decode a string to Base64.
</ title >
</ head >
< body style = "text-align:center;" >
< h1 style = "color:green;" >
GeeksForGeeks
</ h1 >
< p id = "GFG_UP" >
</ p >
< button onclick = "Geeks()" >
Decode
</ button >
< p id = "GFG_DOWN" style = "color:green;" >
</ p >
< script >
var str = "VGhpcyBpcyBHZWVrc0ZvckdlZWtz";
var up = document.getElementById("GFG_UP");
var down = document.getElementById("GFG_DOWN");
up.innerHTML = "Str = '" + str + "'";
function Geeks() {
down.innerHTML = window.atob(str);
}
</ script >
</ body >
</ html >

Выход:

  • Перед нажатием на кнопку:
  • После нажатия на кнопку:

Кроссбраузерный метод используется как библиотека javascript для кодирования / декодирования строки в любом браузере.
Пример-3: В этом примере строка «Это GeeksForGeeks» кодируется путем создания объекта Base64.

<!DOCTYPE html>
< html >
< head >
< title >
JavaScript | encode/decode a string to Base64.
</ title >
</ head >
< body style = "text-align:center;" >
< h1 style = "color:green;" >
GeeksForGeeks
</ h1 >
< p id = "GFG_UP" >
</ p >
< button onclick = "Geeks()" >
Encode
</ button >
< p id = "GFG_DOWN" style = "color:green;" >
</ p >
< script >
var Base64 = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+
"abcdefghijklmnopqrstuvwxyz0123456789+/=",
encode: function(e) {
var t = "";
var n, r, i, s, o, u, a;
var f = 0;
e = Base64._utf8_encode(e);
while (f < e.length ) {
n = e .charCodeAt(f++);
r = e .charCodeAt(f++);
i = e .charCodeAt(f++);
s = n >> 2;
o = (n & 3) << 4 | r >> 4;
u = (r & 15) << 2 | i >> 6;
a = i & 63;
if (isNaN(r)) {
u = a = 64
} else if (isNaN(i)) {
a = 64
}
t = t +
this._keyStr.charAt(s) +
this._keyStr.charAt(o) +
this._keyStr.charAt(u) +
this._keyStr.charAt(a)
}
return t
},
decode: function(e) {
var t = "";
var n, r, i;
var s, o, u, a;
var f = 0;
e = e.replace(/[^A-Za-z0-9+/=]/g, "");
while (f < e.length ) {
s = this ._keyStr.indexOf(e.charAt(f++));
o = this ._keyStr.indexOf(e.charAt(f++));
u = this ._keyStr.indexOf(e.charAt(f++));
a = this ._keyStr.indexOf(e.charAt(f++));
n = s << 2 | o >> 4;
r = (o & 15) << 4 | u >> 2;
i = (u & 3) << 6 | a;
t = t + String.fromCharCode(n);
if (u != 64) {
t = t + String.fromCharCode(r)
}
if (a != 64) {
t = t + String.fromCharCode(i)
}
}
t = Base64 ._utf8_decode(t);
return t
},
_utf8_encode: function(e) {
e = e.replace(/ /g, " ");
var t = "" ;
for (var n = 0 ; n < e.length; n++) {
var r = e .charCodeAt(n);
if (r < 128) {
t += String.fromCharCode(r)
} else if (r > 127 && r < 2048 ) {
t +=
String.fromCharCode(r >> 6 | 192);
t +=
String.fromCharCode(r & 63 | 128)
} else {
t +=
String.fromCharCode(r >> 12 | 224);
t +=
String.fromCharCode(r >> 6 & 63 | 128);
t +=
String.fromCharCode(r & 63 | 128)
}
}
return t
},
_utf8_decode: function(e) {
var t = "";
var n = 0;
var r = c1 = c2 = 0;
while (n < e.length ) {
r = e .charCodeAt(n);
if (r < 128) {
t += String.fromCharCode(r);
n++
} else if (r > 191 && r < 224 ) {
c2 = e .charCodeAt(n + 1);
t += String.fromCharCode(
(r & 31) << 6 | c2 & 63);
n += 2
} else {
c2 = e .charCodeAt(n + 1);
c3 = e .charCodeAt(n + 2);
t += String.fromCharCode(
(r & 15) << 12 | (c2 & 63)
<< 6 | c3 & 63);
n += 3
}
}
return t
}
}
var str = "This is GeeksForGeeks" ;
var up = document .getElementById("GFG_UP");
var down = document .getElementById("GFG_DOWN");
up.innerHTML = "Str = '" + str + "'";
function Geeks() {
down.innerHTML = Base64 .encode(str);
}
</script>
</ body >
</ html >

Выход:

  • Перед нажатием на кнопку:
  • После нажатия на кнопку:

Пример-4: В этом примере строка «VGhpcyBpcyBHZWVrc0ZvckdlZWtz» кодируется путем создания объекта Base64.

<!DOCTYPE html>
< html >
< head >
< title >
JavaScript | encode/decode a string to Base64.
</ title >
</ head >
< body style = "text-align:center;" >
< h1 style = "color:green;" >
GeeksForGeeks
</ h1 >
< p id = "GFG_UP" >
</ p >
< button onclick = "Geeks()" >
Decode
</ button >
< p id = "GFG_DOWN" style = "color:green;" >
</ p >
< script >
var Base64 = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"+
"ghijklmnopqrstuvwxyz0123456789+/=",
encode: function(e) {
var t = "";
var n, r, i, s, o, u, a;
var f = 0;
e = Base64._utf8_encode(e);
while (f < e.length ) {
n = e .charCodeAt(f++);
r = e .charCodeAt(f++);
i = e .charCodeAt(f++);
s = n >> 2;
o = (n & 3) << 4 | r >> 4;
u = (r & 15) << 2 | i >> 6;
a = i & 63;
if (isNaN(r)) {
u = a = 64
} else if (isNaN(i)) {
a = 64
}
t = t +
this._keyStr.charAt(s) +
this._keyStr.charAt(o) +
this._keyStr.charAt(u) +
this._keyStr.charAt(a)
}
return t
},
decode: function(e) {
var t = "";
var n, r, i;
var s, o, u, a;
var f = 0;
e = e.replace(/[^A-Za-z0-9+/=]/g, "");
while (f < e.length ) {
s = this ._keyStr.indexOf(e.charAt(f++));
o = this ._keyStr.indexOf(e.charAt(f++));
u = this ._keyStr.indexOf(e.charAt(f++));
a = this ._keyStr.indexOf(e.charAt(f++));
n = s << 2 | o >> 4;
r = (o & 15) << 4 | u >> 2;
i = (u & 3) << 6 | a;
t = t + String.fromCharCode(n);
if (u != 64) {
t = t + String.fromCharCode(r)
}
if (a != 64) {
t = t + String.fromCharCode(i)
}
}
t = Base64 ._utf8_decode(t);
return t
},
_utf8_encode: function(e) {
e = e.replace(/ /g, " ");
var t = "" ;
for (var n = 0 ; n < e.length; n++) {
var r = e .charCodeAt(n);
if (r < 128) {
t += String.fromCharCode(r)
} else if (r > 127 && r < 2048 ) {
t +=
String.fromCharCode(r >> 6 | 192);
t +=
String.fromCharCode(r & 63 | 128)
} else {
t +=
String.fromCharCode(r >> 12 | 224);
t +=
String.fromCharCode(r >> 6 & 63 | 128);
t +=
String.fromCharCode(r & 63 | 128)
}
}
return t
},
_utf8_decode: function(e) {
var t = "";
var n = 0;
var r = c1 = c2 = 0;
while (n < e.length ) {
r = e .charCodeAt(n);
if (r < 128) {
t += String.fromCharCode(r);
n++
} else if (r > 191 && r < 224 ) {
c2 = e .charCodeAt(n + 1);
t +=
String.fromCharCode(
(r & 31) << 6 | c2 & 63);
n += 2
} else {
c2 = e .charCodeAt(n + 1);
c3 = e .charCodeAt(n + 2);
t +=
String.fromCharCode(
(r & 15) << 12 |
(c2 & 63) << 6 | c3 & 63);
n += 3
}
}
return t
}
}
var str = "VGhpcyBpcyBHZWVrc0ZvckdlZWtz" ;
var up = document .getElementById("GFG_UP");
var down = document .getElementById("GFG_DOWN");
up.innerHTML = "Str = '" + str + "'";
function Geeks() {
down.innerHTML = Base64 .decode(str);
}
</script>
</ body >
</ html >

Выход:

  • Перед нажатием на кнопку:
  • После нажатия на кнопку: