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 相关文章推荐
深入认识javascript中的eval函数
Nov 02 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
删除条目时弹出的确认对话框
Jun 05 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
Nov 25 Javascript
vue组件创建的三种方式小结
Feb 03 Javascript
vue移动端写的拖拽功能示例代码
Sep 09 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
微信公众号实现会员卡领取功能
2017/06/08 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
原生js开发的日历插件
2017/02/04 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
iview实现图片上传功能
2020/06/29 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
linux下安装easy_install的方法
2013/02/10 Python
python代码制作configure文件示例
2014/07/28 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
中医专业职业生涯规划书范文
2014/01/04 职场文书
慈善晚会策划方案
2014/05/14 职场文书
迎国庆演讲稿
2014/09/15 职场文书
2014年校长工作总结
2014/12/11 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
python实现简单区块链结构
2021/04/25 Python
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
Mysql 设置boolean类型的操作
2021/06/04 MySQL
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android