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 相关文章推荐
JS 页面自动加载函数(兼容多浏览器)
May 18 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
jQuery中prevAll()方法用法实例
Jan 08 Javascript
javascript 闭包详解
Feb 15 Javascript
把Node.js程序加入服务实现随机启动
Jun 25 Javascript
javascript页面倒计时实例
Jul 25 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
使用next.js开发网址缩短服务的方法
Jun 17 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
JavaScript面向对象编程
2008/03/02 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
javascript常用的方法整理
2015/08/20 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
python3学生名片管理v2.0版
2018/11/29 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
python读取ini配置文件过程示范
2019/12/23 Python
python 19个值得学习的编程技巧
2020/08/15 Python
python中pow函数用法及功能说明
2020/12/04 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
机械专业应届生求职信
2013/09/21 职场文书
汽车驾驶求职信
2013/10/25 职场文书
应届生会计求职信
2013/11/11 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
2014年中秋寄语
2014/08/11 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
担保书范本
2015/01/20 职场文书
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers