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中获取出错代码所在文件及行数的代码
Sep 23 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
使用typeof方法判断undefined类型
Sep 09 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
关于JavaScript限制字数的输入框的那些事
Aug 14 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
微信小程序 如何保持登录状态
Aug 16 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
Vue router安装及使用方法解析
Dec 02 Vue.js
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
第三节--定义一个类
2006/11/16 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
最新28个很棒的jQuery 教程
2011/05/28 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python单元测试实例详解
2018/05/25 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
大学生应聘自荐信
2013/10/11 职场文书
优秀护士演讲稿
2014/04/30 职场文书
建设投标担保书
2014/05/13 职场文书
受伤赔偿协议书
2014/09/24 职场文书
银行转正自我鉴定
2014/09/29 职场文书
医生个人年终总结
2015/02/28 职场文书
学校运动会通讯稿
2015/07/18 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
Go中的条件语句Switch示例详解
2021/08/23 Golang
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android