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 类
Nov 07 Javascript
UserData用法总结 lanyu出品
Jul 01 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 Javascript
微信小程序开发之toast提示插件使用示例
Jun 08 Javascript
jQuery选择器之子元素选择器详解
Sep 18 jQuery
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
scrapyd schedule.json setting 传入多个值问题
Aug 07 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
浏览器JavaScript调试功能无法使用解决方案
Sep 18 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
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介绍篇
2010/10/26 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php实现通过ftp上传文件
2015/06/19 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python 多线程实例详解
2017/03/25 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
上海期货面试题
2014/01/31 面试题
监理员的岗位职责
2013/11/13 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
激励口号大全
2014/06/17 职场文书
三峡大坝导游词
2015/01/31 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
python中filter,map,reduce的作用
2022/06/10 Python