JavaScript实现的encode64加密算法实例分析


Posted in Javascript onApril 15, 2015

本文实例讲述了JavaScript实现的encode64加密算法。分享给大家供大家参考。具体如下:

这段JavaScript代码可实现encode64加密算法,速度还是相当不错的。

//encode64编解码
(function() {
 var codeChar = "PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh";
 window.encode64 = function(str) {
  var s = "";
  var a = strToBytes(str);
  //取得字串的字节数组, 数组长度是字串长度的2倍.
  var res = a.length % 3;
  //3个字节一组进行处理, 余下特殊处理
  var i = 2, v;
  for (; i < a.length; i += 3) {
  //每3个字节用4个字符表示, 
  //相当于3个字符(实际上是6个字节)用8个字符编码(实际为16个字节)
  //看起来容量膨胀了很多, 但是在启用压缩的情况下, 这些又被抵消掉了
   v = a[i - 2] + (a[i - 1] << 8) + (a[i] << 16);
   s += codeChar.charAt(v & 0x3f);
   s += codeChar.charAt((v >> 6) & 0x3f);
   s += codeChar.charAt((v >> 12) & 0x3f);
   s += codeChar.charAt((v >> 18));
  }
  if (res == 1) {//字节余一位时候, 补2个字符, 64*64>256
   v = a[i - 2];
   s += codeChar.charAt(v & 0x3f);
   s += codeChar.charAt((v >> 6) & 0x3f);
  } else if (res == 2) {
  //字节余2位的时候, 补3个字节, 64*64*64>256*256, 所以是可行的
   v = a[i - 2] + (a[i - 1] << 8);
   s += codeChar.charAt(v & 0x3f);
   s += codeChar.charAt((v >> 6) & 0x3f);
   s += codeChar.charAt((v >> 12) & 0x3f);
  }
  return s;
 };
 window.decode64 = function(codeStr) {
  var dic = [];
  for (var i = 0; i < codeChar.length; i++) {
   dic[codeChar.charAt(i)] = i;
  }
  var code = [];
  var res = codeStr.length % 4;
  var i = 3, v;
  for (; i < codeStr.length; i += 4) {
   v = dic[codeStr.charAt(i - 3)];
   v += dic[codeStr.charAt(i - 2)] << 6;
   v += dic[codeStr.charAt(i - 1)] << 12;
   v += dic[codeStr.charAt(i)] << 18;
   code.push(v & 0xff, (v >> 8) & 0xff, (v >> 16) & 0xff);
  }
  if (res == 2) {
  //正确的字节数肯定是余2或3, 没有1的情况, 如果出现, 舍弃.
   v = dic[codeStr.charAt(i - 3)];
   v += dic[codeStr.charAt(i - 2)] << 6;
   code.push(v & 0xff);
  } else if (res == 3) {
   v = dic[codeStr.charAt(i - 3)];
   v += dic[codeStr.charAt(i - 2)] << 6;
   v += dic[codeStr.charAt(i - 1)] << 12;
   code.push(v & 0xff, (v >> 8) & 0xff);
  }
  return strFromBytes(code);
 };
})();

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
JavaScript 空位补零实现代码
Feb 26 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
一个可复用的vue分页组件
May 15 Javascript
JS实现websocket长轮询实时消息提示的效果
Oct 10 Javascript
Angular Renderer (渲染器)的具体使用
May 03 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 13 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
vue使用video插件vue-video-player的示例
Oct 03 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
JavaScript实现拖拽网页内元素的方法
Apr 15 #Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 #Javascript
jquery实现简单的无缝滚动
Apr 15 #Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 #Javascript
JQuery select(下拉框)操作方法汇总
Apr 15 #Javascript
JavaScript控制网页层收起和展开效果的方法
Apr 15 #Javascript
JS扩展方法实例分析
Apr 15 #Javascript
You might like
PHP类中Static方法效率测试代码
2010/10/17 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP概率计算函数汇总
2015/09/13 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
phpwind放自动注册方法
2006/12/02 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
js实现打字小游戏
2019/12/17 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python matplotlib拟合直线的实现
2019/11/19 Python
浅析python实现动态规划背包问题
2020/12/31 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
中专生自我鉴定书范文
2013/12/28 职场文书
安全生产承诺书
2014/03/26 职场文书
排查整治工作方案
2014/06/09 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
清洁工个人总结
2015/03/04 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书