Created
June 2, 2016 20:09
-
-
Save vinicius-stutz/2106480ff14b7d3ccb8169413f4b0418 to your computer and use it in GitHub Desktop.
Encode String with Base64 in Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- Add some tags here, head, title etc and your references --> | |
<p> | |
<label>Codificada:</label> | |
<span id='1'></span> | |
</p> | |
<p> | |
<label>Limpa:</label> | |
<span id='2'></span> | |
</p> | |
<!-- Close body, html... --> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create Base64 Object | |
var Base64 = { | |
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", | |
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(/rn/g, "n"); | |
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 | |
} | |
} | |
// Define the string | |
var string = 'Minha string'; | |
// Encode the String | |
var encodedString = Base64.encode(string); | |
$('span#1').text(encodedString); | |
// Decode the String | |
var decodedString = Base64.decode(encodedString); | |
$('span#2').text(decodedString); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment