Js base64 加密解密介绍


Posted in Javascript onOctober 11, 2013
<script type="text/javascript"> var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 
var base64decodechars = new Array( 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, 
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, 
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); 
function base64encode(str) { 
var out, i, len; 
var c1, c2, c3; 
len = str.length; 
i = 0; 
out = ""; 
while (i < len) { 
c1 = str.charCodeAt(i++) & 0xff; 
if (i == len) { 
out += base64encodechars.charAt(c1 >> 2); 
out += base64encodechars.charAt((c1 & 0x3) << 4); 
out += "=="; 
break; 
} 
c2 = str.charCodeAt(i++); 
if (i == len) { 
out += base64encodechars.charAt(c1 >> 2); 
out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4)); 
out += base64encodechars.charAt((c2 & 0xf) << 2); 
out += "="; 
break; 
} 
c3 = str.charCodeAt(i++); 
out += base64encodechars.charAt(c1 >> 2); 
out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4)); 
out += base64encodechars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6)); 
out += base64encodechars.charAt(c3 & 0x3f); 
} 
return out; 
} 
function base64decode(str) { 
var c1, c2, c3, c4; 
var i, len, out; 
len = str.length; 
i = 0; 
out = ""; 
while (i < len) { 
do { 
c1 = base64decodechars[str.charCodeAt(i++) & 0xff]; 
} while (i < len && c1 == -1); 
if (c1 == -1) 
break; 
do { 
c2 = base64decodechars[str.charCodeAt(i++) & 0xff]; 
} while (i < len && c2 == -1); 
if (c2 == -1) 
break; 
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); 
do { 
c3 = str.charCodeAt(i++) & 0xff; 
if (c3 == 61) 
return out; 
c3 = base64decodechars[c3]; 
} while (i < len && c3 == -1); 
if (c3 == -1) 
break; 
out += String.fromCharCode(((c2 & 0xf) << 4) | ((c3 & 0x3c) >> 2)); 
do { 
c4 = str.charCodeAt(i++) & 0xff; 
if (c4 == 61) 
return out; 
c4 = base64decodechars[c4]; 
} while (i < len && c4 == -1); 
if (c4 == -1) 
break; 
out += String.fromCharCode(((c3 & 0x03) << 6) | c4); 
} 
return out; 
} 
</script>
Javascript 相关文章推荐
js单例模式的两种方案
Oct 22 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
Jul 21 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
js实现的捐赠管理完整实例
Jan 20 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
基于JavaScript中标识符的命名规则介绍
Jan 06 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
小程序实现五星点评效果
Nov 03 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 #Javascript
js定时器怎么写?就是在特定时间执行某段程序
Oct 11 #Javascript
jQuery下的动画处理总结
Oct 10 #Javascript
了解了这些才能开始发挥jQuery的威力
Oct 10 #Javascript
JavaScript 垃圾回收机制分析
Oct 10 #Javascript
jQuery的attr与prop使用介绍
Oct 10 #Javascript
JavaScript 数组详解
Oct 10 #Javascript
You might like
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python文件写入write()的操作
2019/05/14 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
如何对python的字典进行排序
2020/06/19 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
css sprite简单实例
2016/05/23 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
投标授权委托书范文
2014/08/02 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
施工现场安全管理制度
2015/08/05 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python
服务器间如何实现文件共享
2022/05/20 Servers