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 相关文章推荐
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 Javascript
JavaScript+CSS无限极分类效果完整实现方法
Dec 22 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
js格式化时间的简单实例
Nov 27 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
在vue中封装可复用的组件方法
Mar 01 Javascript
react配置antd按需加载的使用
Feb 11 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
JS实现简易贪吃蛇游戏
Aug 24 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中foreach()用法汇总
2015/07/02 PHP
PHP 图片处理
2020/09/16 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
python获得图片base64编码示例
2014/01/16 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
python opencv之分水岭算法示例
2018/02/24 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
python中pivot()函数基础知识点
2021/01/03 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
J2EE包括哪些技术
2016/11/25 面试题
物流管理毕业生自荐信
2013/10/24 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
redis实现的四种常见限流策略
2021/06/18 Redis
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python