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 相关文章推荐
Javascript String对象扩展HTML编码和解码的方法
Jun 02 Javascript
IE6下js通过css隐藏select的一个bug
Aug 16 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
原生Javascript封装的一个AJAX函数分享
Oct 11 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
Ext JS 实现建议词模糊动态搜索功能
May 13 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
Vue中CSS动画原理的实现
Feb 13 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
vue.js click点击事件获取当前元素对象的操作
Aug 07 Javascript
vue项目打包后路由错误的解决方法
Apr 13 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防注入漏洞过滤函数代码
2012/04/11 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
超级强大的表单验证
2006/06/26 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
js友好的时间返回函数
2016/08/24 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
深入理解vue中的$set
2017/06/01 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
python基于SMTP协议发送邮件
2019/05/31 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
《美丽的公鸡》教学反思
2014/02/25 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2015年保管员工作总结
2015/04/30 职场文书
小学教育见习总结
2015/06/23 职场文书
小学运动会加油词
2015/07/18 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书