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 相关文章推荐
js实现使用鼠标拖拽切换图片的方法
May 04 Javascript
js仿黑客帝国字母掉落效果代码分享
Nov 08 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
Aug 21 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
微信小程序实现换肤功能
Mar 14 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
layer.alert回调函数执行关闭弹窗的实例
Sep 11 Javascript
JS实现进度条动态加载特效
Mar 25 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
May 23 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
smarty section简介与用法分析
2008/10/03 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
PHP会话控制实例分析
2016/12/24 PHP
PHP静态成员变量
2017/02/14 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
jquery中ajax学习笔记4
2011/10/16 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
wap手机端解决返回上一页的js实例
2016/12/08 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
如何获取vue单文件自身源码路径
2019/05/06 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
vue实现登录功能
2020/12/31 Vue.js
Python实现CET查分的方法
2015/03/10 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
使用Python绘制图表大全总结
2017/02/11 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
Python和Sublime整合过程图示
2019/12/25 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
pandas的resample重采样的使用
2020/04/24 Python
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
欢迎横幅标语
2014/06/17 职场文书
实习科室评语
2015/01/04 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python