JS实现的base64加密解密操作示例


Posted in Javascript onApril 18, 2018

本文实例讲述了JS实现的base64加密解密操作。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>js base64加密解密</title>
</head>
<body>
<script>
// 创建Base64对象
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
 }
}
// 定义字符串
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>

运行结果:

JS实现的base64加密解密操作示例

Javascript 相关文章推荐
Moment.js 不容错过的超棒Javascript日期处理类库
Apr 15 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
浅谈EasyUI中Treegrid节点的删除
Mar 01 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
jQuery实现转动随机数抽奖效果的方法
May 21 Javascript
readonly和disabled属性的区别
Jul 26 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
JS求解三元一次方程组值的方法
Jan 03 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
Jun 30 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
Angular实现svg和png图片下载实现
May 05 Javascript
Vue项目打包编译优化方案
Sep 16 Javascript
JS实现简单获取最近7天和最近3天日期的方法
Apr 18 #Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 #Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 #jQuery
Angular 如何使用第三方库的方法
Apr 18 #Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 #jQuery
浅谈mvvm-simple双向绑定简单实现
Apr 18 #Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 #Javascript
You might like
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python 实现线程之间的通信示例
2020/02/14 Python
AUC计算方法与Python实现代码
2020/02/28 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
毕业生如何写自我鉴定
2014/03/15 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
病房管理制度范本
2015/08/06 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
用JS写一个发布订阅模式
2021/11/07 Javascript