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实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
javascript scrollTop正解使用方法
Nov 14 Javascript
简单介绍JavaScript中字符串创建的基本方法
Jul 07 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
webpack配置之后端渲染详解
Oct 26 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
改变layer confirm弹窗按钮的颜色方法
Sep 12 Javascript
微信小程序开发摇一摇功能
Nov 22 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之第二天
2006/10/09 PHP
一个PHP+MSSQL分页的例子
2006/10/09 PHP
PHP 表单提交给自己
2008/07/24 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
详谈javascript异步编程
2016/02/21 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
小程序实现留言板
2018/11/02 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
Python使用Supervisor来管理进程的方法
2015/05/28 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
刘公岛导游词
2015/02/05 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
php字符串倒叙
2021/04/01 PHP
go语言中http超时引发的事故解决
2021/06/02 Golang
Python实现归一化算法详情
2022/03/18 Python
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers