js的base64加密解密如下代码举例:
<!DOCTYPE html>
List item
<html>
<head>
<meta charset="utf-8" />
<title>js base64加密解密</title>
</head>
<body>
<script>
// 创建Base64对象-----------------------------
var Base64 =
{
//只允许本对象使用的private---------------------
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
//可引用的加密方法public-----------------------
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;
//当n是最后一个密文时------------------------
if (isNaN(r))
{
u = a = 64
}
//当r是最后一个密文时------------------------
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
},
//可引用的解密方法public-----------------------
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
}
}
// 定义字符串密码------------------------------
var string = 'Hello World!';
// 加密--------------------------------------
var encodedString = Base64.encode(string);
console.log(encodedString);
// 输出: "SGVsbG8gV29ybGQh"-------------------
// 解密---------------------------------------
var decodedString = Base64.decode(encodedString);
console.log(decodedString);
// 输出: "Hello World!"-----------------------
</script>
</body>
</html>
代码若有错误,请不吝赐教。
本