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 相关文章推荐
Jquery 常用方法经典总结
Jan 28 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 Javascript
Bootstrap学习笔记之js组件(4)
Jun 12 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
vuex 项目结构目录及一些简单配置介绍
Apr 08 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 Javascript
js核心基础之构造函数constructor用法实例分析
May 11 Javascript
JS图片预加载三种实现方法解析
May 08 Javascript
在antd中setFieldsValue和defaultVal的用法
Oct 29 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中的print_r 与 var_dump 输出数组
2016/06/13 PHP
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
python中的for循环
2018/09/28 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
在Python中COM口的调用方法
2019/07/03 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
历史教育专业个人求职信
2013/12/13 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
社区工作者感言
2014/03/02 职场文书
企业法人授权委托书
2014/04/03 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
建设工程授权委托书
2014/09/22 职场文书
总经理助理岗位职责
2015/01/31 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
2015年科室工作总结
2015/04/10 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2015年调度员工作总结
2015/04/30 职场文书
2015年中秋寄语
2015/07/31 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
python Tkinter模块使用方法详解
2022/04/07 Python