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 相关文章推荐
jquery插件jbox使用iframe关闭问题
Feb 09 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
Aug 07 Javascript
js在IE与firefox的差异集锦
Nov 11 Javascript
angularjs客户端实现压缩图片文件并上传实例
Jul 06 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
ES6中class类用法实例浅析
Apr 06 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
vue 中swiper的使用教程
May 22 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
Sep 16 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
Sep 24 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
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
常用PHP框架功能对照表
2014/10/23 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
vue组件name的作用小结
2018/05/23 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Django Highcharts制作图表
2016/08/27 Python
Python Socket传输文件示例
2017/01/16 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
python滑块验证码的破解实现
2019/11/10 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
python学生管理系统的实现
2020/04/05 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
商务英语专业自荐信
2013/10/14 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
社区文化建设方案
2014/05/02 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
比较几种Redis集群方案
2021/06/21 Redis
box-shadow单边阴影的实现
2023/05/21 HTML / CSS