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跨域总结
Aug 30 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
js中的push和join方法使用介绍
Oct 08 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
Feb 10 Javascript
JS获取当前网页大小以及屏幕分辨率等
Sep 05 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
JavaScript 匿名函数和闭包介绍
Apr 13 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
JavaScript调用模式与this关键字绑定的关系
Apr 21 Javascript
vue返回上一页面时回到原先滚动的位置的方法
Dec 20 Javascript
javascript用defineProperty实现简单的双向绑定方法
Apr 03 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
zend framework重定向方法小结
2016/05/28 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
学习jQuey中的return false
2015/12/18 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
Python排序函数的使用方法详解
2020/12/11 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
商务英语广告词大全
2014/03/18 职场文书
职业生涯规划书前言
2014/04/15 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python