全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

最近刚发现的一个比较简单的代码支持utf8,可以直接拿来使用。

base64加解密代码一

function bs64DeCode(str) {
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function _utf8_decode(e) {
        var t = "";
        var n = 0;
        var r = c1 = c2 = 0;
        while (n < e.length) {
            r = e.charCodeAt(n);
            if (r < 128) {
                t += String.fromCharCode(r);
                n++
            } else if (r > 191 && r < 224) {
                c2 = e.charCodeAt(n + 1);
                t += String.fromCharCode((r & 31) << 6 | c2 & 63);
                n += 2
            } else {
                c2 = e.charCodeAt(n + 1);
                c3 = e.charCodeAt(n + 2);
                t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                n += 3
            }
        }
        return t
    }
    function decode(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;
    }
    return decode(str);
}

// 字符串转base64
function b64EncodeUnicode(str) {
    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
        return String.fromCharCode('0x' + p1);
    }));
}

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的加密解密方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js实现base64  # js实现base64 加密 解密  # JavaScript实现的前端AES加密解密功能【基于CryptoJS】  # JavaScript实现的简单加密解密操作示例  # JS实现的3des+base64加密解密算法完整示例  # JS实现的base64加密解密操作示例  # 原生js的RSA和AES加密解密算法  # 两种JavaScript的AES加密方式(可与Java相互加解密)  # JS实现的base64加密解密完整实例  # Js base64 加密解密介绍  # JavaScript加密解密7种方法总结分析  # JavaScript实现加密与解密详解  # 加密解密  # 小编  # 就会  # 在此  # 给大家  # 可以直接  # 这几天  # 一个问题  # 要将  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # 加解密  # charCodeAt  # length  # String  # var  # _utf8_decode 


相关文章: 建站之星在线版空间:自助建站+智能模板一键生成方案  如何快速使用云服务器搭建个人网站?  高端网站建设与定制开发一站式解决方案 中企动力  教学论文网站制作软件有哪些,写论文用什么软件 ?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  建站主机核心功能解析:服务器选择与网站搭建流程指南  建站之星如何修改网站生成路径?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  建站org新手必看:2024最新搭建流程与模板选择技巧  如何在局域网内绑定自建网站域名?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  定制建站如何定义?其核心优势是什么?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  已有域名和空间如何快速搭建网站?  网站制作企业,网站的banner和导航栏是指什么?  微信推文制作网站有哪些,怎么做微信推文,急?  如何在云主机上快速搭建多站点网站?  如何在阿里云香港服务器快速搭建网站?  高防服务器如何保障网站安全无虞?  实例解析Array和String方法  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  制作销售网站教学视频,销售网站有哪些?  详解jQuery中基本的动画方法  建站之星代理如何优化在线客服效率?  如何配置IIS站点权限与局域网访问?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  如何选择建站程序?包含哪些必备功能与类型?  如何在西部数码注册域名并快速搭建网站?  如何获取上海专业网站定制建站电话?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  网页设计与网站制作内容,怎样注册网站?  重庆市网站制作公司,重庆招聘网站哪个好?  制作企业网站建设方案,怎样建设一个公司网站?  如何用虚拟主机快速搭建网站?详细步骤解析  香港服务器建站指南:免备案优势与SEO优化技巧全解析  一键网站制作软件,义乌购一件代发流程?  建站之星安装后界面空白如何解决?  建站之星后台管理系统如何操作?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  建站之星与建站宝盒如何选择最佳方案?  如何在宝塔面板创建新站点?  定制建站方案优化指南:企业官网开发与建站费用解析  建站之星安装步骤有哪些常见问题?  清除minerd进程的简单方法  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何选择高性价比服务器搭建个人网站?  建站之星后台管理如何实现高效配置?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何在IIS7上新建站点并设置安全权限? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。