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 相关文章推荐
web性能优化之javascript性能调优
Dec 28 Javascript
判断输入是否为空,获得输入类型的JS代码
Oct 30 Javascript
js中精确计算加法和减法示例
Mar 28 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
JS判断页面是否出现滚动条的方法
Jul 17 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
Dec 08 Javascript
常用的Javascript设计模式小结
Dec 09 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 Javascript
JS数组的高级使用方法示例小结
Mar 14 Javascript
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
vue路由切换时取消之前的所有请求操作
Sep 01 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
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
wxPython中文教程入门实例
2014/06/09 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
pandas值替换方法
2018/07/10 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
简单了解python中对象的取反运算符
2019/07/01 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
C#中的验证控件有几种
2014/03/08 面试题
请介绍一下WSDL的文档结构
2013/03/17 面试题
批评与自我批评材料
2014/02/15 职场文书
求职自荐信的格式
2014/04/07 职场文书
创建文明城市标语
2014/06/16 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
2015大一新生军训感言
2015/08/01 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
Android自定义双向滑动控件
2022/04/19 Java/Android