当前位置:首页 > 日记 > 正文

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

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

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

相关文章

如何在word中竖向排列文字word中竖

如何在word中竖向排列文字word中竖

文字,竖向,排列,步骤,如何在,  或许,你去新华书店或者图书馆曾经看到过这样的书籍,文字是自上而下,自左向右或自右向左的,这种样式的版面是我们国家古代出版的书籍版式,那么下面就由小编给大家分享下在word中竖向排列文字的技巧,希望能帮助到您…

让你彻底掌握es6 Promise的八段代

让你彻底掌握es6 Promise的八段代

让你,代码,电脑软件,Promise,前言新的ES6中引入了promise的概念,目的是让回调更为优雅。层层嵌套的回调会让javascript失去美感和可读性,同时javascript也推荐采用链式的方式去书写函数调用。于是Promise就应运而生。本文将通过八段代码让大…

怎么在word中对齐自选图像在word中

怎么在word中对齐自选图像在word中

对齐,图像,步骤,方法,图形,  在word中,有时需要插入图形,当有多个图像时,手动对齐比较麻烦。下面小编教你怎样在word中对齐自选图像。word对齐图形的步骤打开需要对齐的文档,如图:word对齐图形的步骤图1  按住【ctrl】键依次选中需要对齐的…

Word中2010版进行设置文本框样式和

Word中2010版进行设置文本框样式和

设置,文本框,操作技巧,样式,颜色,  如何在Word2010中设置文本框样式和颜色。去除文本框的外边框。以及更改外边框的颜色和样式。今天,小编就教大家在Word中2010版进行设置文本框样式和颜色的操作技巧。Word中2010版进行设置文本框样式和颜…

jQuery实现文章弹出放大效果

jQuery实现文章弹出放大效果

弹出,效果,文章,电脑软件,jQuery,首先先搭写一个基本的格式:$.fn.popImg = function() { //your code goes here}然后用自调用匿名函数包裹你的代码,将系统变量以变量形式传递到插件内部,如下:;(function($,window,document,undefined){ $.fn…

cdr怎么给制作玻璃砖效果?

cdr怎么给制作玻璃砖效果?

效果,电脑软件,cdr,CorelDRAW中想要给图片制作玻璃砖效果,cdr中自带了这个这个效果,该怎么制作呢?下面我们就来看看详细的教程。软件名称:CorelDRAW X5 中文正式版 v15.2.0.661 附详细安装教程软件大小:496MB更新时间:2016-05-161、打开CorelDRAW…

JS字符串按逗号和回车分隔的方法

JS字符串按逗号和回车分隔的方法

方法,字符串,逗号,电脑软件,JS,split函数可以传入一个正则表达式作为分隔的字符串。function foo(str){ var temp = str.split(/[\n,]/g); for(var i =0;i<temp.length;i++){ if(temp[i] == ""){ temp.splice(i, 1); /…

js时间戳格式化成日期格式的多种方

js时间戳格式化成日期格式的多种方

时间戳,方法,日期格式,多种,格式,js需要把时间戳转为为普通格式,一般的情况下可能用不到的, 下面先来看第一种吧function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' '); } alert(…

PS有哪些专业术语? 初学者必看的ps

PS有哪些专业术语? 初学者必看的ps

专业术语,必看,初学者,有哪些,电脑软件,ps中有一些专业术语,如果不理解的朋友别人将专业术语自己是听不懂的,该怎么理解这些专业术语呢?下面我们就来看看那详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时…

解决ionic和angular上拉加载的问题

解决ionic和angular上拉加载的问题

上拉加载,电脑软件,ionic,angular,说到ionic上拉加载就跟pc的分页是一样的,他需要在html数据列表的最下面边添加<ion-infinite-scroll ng-if="hasmore" on-infinite="loadMore()" distance="10%"> </ion-infinite-scroll> 当列表为空 …

PS合成有趣的各种动物赛跑场景

PS合成有趣的各种动物赛跑场景

场景,有趣,动物,电脑软件,PS,效果图合成并不难,前期需要搜集一些奔跑的动物图片,并把这些动物抠出放到处理好的背景上;动物的形态不是很好的话,可以对局部变形处理;最后微调颜色和光影,并加上投影等即可。最终效果1、创建一个空白文档。2、设置背…

photoshop快捷键命令大全速记

photoshop快捷键命令大全速记

命令大全,快捷键,电脑软件,photoshop,Adobe Photoshop是电影、视频和多媒体领域的专业人士, 使用 3D 和动画的图形和 Web 设计人员, 以及工程和科学领域的专业人士的理想选择。而灵活使用软件快捷键则是学好软件的基础。工具箱(多种工具共…