Javascript实现base64的加密解密方法示例


Posted in Javascript onJune 27, 2017

这几天使用PHP向前端传值的时候,遇到一个问题,要将代码传过去赋值。如果使用urlencode()和urldecode()函数,就会出现js无法解码的情况,因为php和js的相关函数算法不一致。于是准备使用通用的base64加密解密。

base64 加密解密

下方是base64用javascript写出来的函数和方法。

//1.加密解密方法使用:
//1.加密 
var str = '124中文内容'; 
var base = new Base64(); 
var result = base.encode(str); 
//document.write(result); 
//2.解密 
var result2 = base.decode(result); 
document.write(result2); 
//2.加密、解密算法封装:
function Base64() { 
  // private property 
  _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 
  // public method for encoding 
  this.encode = function (input) { 
    var output = ""; 
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4; 
    var i = 0; 
    input = _utf8_encode(input); 
    while (i < input.length) { 
      chr1 = input.charCodeAt(i++); 
      chr2 = input.charCodeAt(i++); 
      chr3 = input.charCodeAt(i++); 
      enc1 = chr1 >> 2; 
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 
      enc4 = chr3 & 63; 
      if (isNaN(chr2)) { 
        enc3 = enc4 = 64; 
      } else if (isNaN(chr3)) { 
        enc4 = 64; 
      } 
      output = output + 
      _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + 
      _keyStr.charAt(enc3) + _keyStr.charAt(enc4); 
    } 
    return output; 
  } 
  // public method for decoding 
  this.decode = function (input) { 
    var output = ""; 
    var chr1, chr2, chr3; 
    var enc1, enc2, enc3, enc4; 
    var i = 0; 
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 
    while (i < input.length) { 
      enc1 = _keyStr.indexOf(input.charAt(i++)); 
      enc2 = _keyStr.indexOf(input.charAt(i++)); 
      enc3 = _keyStr.indexOf(input.charAt(i++)); 
      enc4 = _keyStr.indexOf(input.charAt(i++)); 
      chr1 = (enc1 << 2) | (enc2 >> 4); 
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); 
      chr3 = ((enc3 & 3) << 6) | enc4; 
      output = output + String.fromCharCode(chr1); 
      if (enc3 != 64) { 
        output = output + String.fromCharCode(chr2); 
      } 
      if (enc4 != 64) { 
        output = output + String.fromCharCode(chr3); 
      } 
    } 
    output = _utf8_decode(output); 
    return output; 
  } 
  // private method for UTF-8 encoding 
  _utf8_encode = function (string) { 
    string = string.replace(/\r\n/g,"\n"); 
    var utftext = ""; 
    for (var n = 0; n < string.length; n++) { 
      var c = string.charCodeAt(n); 
      if (c < 128) { 
        utftext += String.fromCharCode(c); 
      } else if((c > 127) && (c < 2048)) { 
        utftext += String.fromCharCode((c >> 6) | 192); 
        utftext += String.fromCharCode((c & 63) | 128); 
      } else { 
        utftext += String.fromCharCode((c >> 12) | 224); 
        utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
        utftext += String.fromCharCode((c & 63) | 128); 
      } 
    } 
    return utftext; 
  } 
  // private method for UTF-8 decoding 
  _utf8_decode = function (utftext) { 
    var string = ""; 
    var i = 0; 
    var c = c1 = c2 = 0; 
    while ( i < utftext.length ) { 
      c = utftext.charCodeAt(i); 
      if (c < 128) { 
        string += String.fromCharCode(c); 
        i++; 
      } else if((c > 191) && (c < 224)) { 
        c2 = utftext.charCodeAt(i+1); 
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); 
        i += 2; 
      } else { 
        c2 = utftext.charCodeAt(i+1); 
        c3 = utftext.charCodeAt(i+2); 
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 
        i += 3; 
      } 
    } 
    return string; 
  } 
}

以上所述是小编给大家介绍的Javascript实现base64的加密解密方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery 学习之一 对象访问
Nov 23 Javascript
基于Jquery的标签智能验证实现代码
Dec 27 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
Javascript仿PHP $_GET获取URL中的参数
May 12 Javascript
JavaScript中的闭包介绍
Mar 15 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
Bootstrap3 内联单选和多选框
Dec 29 Javascript
Angular父组件调用子组件的方法
Apr 02 Javascript
Vue中父子组件通讯之todolist组件功能开发
May 21 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
bootstrap table实现横向合并与纵向合并
Jul 18 Javascript
JS实现扫雷项目总结
May 19 Javascript
微信小程序 空白页重定向解决办法
Jun 27 #Javascript
ionic 自定义弹框效果
Jun 27 #Javascript
js脚本编写简单刷票投票系统
Jun 27 #Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 #Javascript
详解vue.js的事件处理器v-on:click
Jun 27 #Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 #Javascript
Vue.js常用指令之循环使用v-for指令教程
Jun 27 #Javascript
You might like
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
Python中列表元素转为数字的方法分析
2016/06/14 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
Python函数返回不定数量的值方法
2019/01/22 Python
用python读取xlsx文件
2020/12/17 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
公司领导推荐信
2013/11/12 职场文书
物流专业求职计划书
2014/01/10 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
主要领导对照检查材料
2014/08/26 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
退休欢送会主持词
2015/07/01 职场文书