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 相关文章推荐
解析JavaScript中instanceof对于不同的构造器或许都返回true
Dec 03 Javascript
JavaScript生成带有缩进的表格代码
Jun 15 Javascript
利用js编写响应式侧边栏
Sep 17 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
Sep 18 Javascript
遍历json获得数据的几种方法小结
Jan 21 Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 Javascript
p5.js入门教程和基本形状绘制
Mar 15 Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 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中header和session_start前不能有输出原因分析
2013/01/11 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
关于js陀螺仪的理解分析
2019/04/11 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
连接Python程序与MySQL的教程
2015/04/29 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
python中元组的用法整理
2020/06/15 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
环境工程大学生个人的自我评价
2013/10/08 职场文书
怎么写有吸引力的自荐信
2013/11/17 职场文书
大学校园活动策划书
2014/02/04 职场文书
读书月活动方案
2014/05/22 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
学生检讨书范文
2014/10/30 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
论语读书笔记
2015/06/26 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python