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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
用JavaScript 处理 URL 的两个函数代码
Aug 13 Javascript
JS中toFixed()方法引起的问题如何解决
Nov 20 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
js实现div拖动动画运行轨迹效果代码分享
Aug 27 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
基于AngularJS实现表单验证功能
Jul 28 Javascript
关于vue.js发布后路径引用的问题解决
Aug 15 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
Sep 23 Javascript
vuex实现购物车功能
Jun 28 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
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
JavaScript字符串对象
2017/01/14 Javascript
初探nodeJS
2017/01/24 NodeJs
H5实现仿flash效果的实现代码
2017/09/29 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
python数据挖掘需要学的内容
2019/06/23 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
python实现贪吃蛇双人大战
2020/04/18 Python
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
linux系统都有哪些运行级别
2012/04/15 面试题
医院办公室主任职责
2013/12/29 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
2014年销售部工作总结
2014/12/01 职场文书
英语感谢信范文
2015/01/20 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
mysql数据库实现设置字段长度
2022/06/10 MySQL
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers