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的数组的扩展实例代码
Jul 09 Javascript
javascript 树控件 比较好用
Jun 11 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
细说浏览器特性检测(2)-通用事件检测
Nov 05 Javascript
js日期相关函数总结分享
Oct 15 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
Aug 21 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
JS清除字符串中重复值的实现方法
Aug 03 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
Feb 22 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 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作为Shell脚本语言使用
2006/10/09 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
Maps Javascript
2007/01/22 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
python实现的简单抽奖系统实例
2015/05/22 Python
Python中存取文件的4种不同操作
2018/07/02 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
学校消防安全制度
2014/01/30 职场文书
单位租房协议书样本
2014/10/30 职场文书
2015年护士节慰问信
2015/03/23 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis