js Base64与字符串互转

摘要:
1、base64加密在页面中引入base64.js文件,调用方法为:˂!

1、base64加密

在页面中引入base64.js文件,调用方法为:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>base64加密</title>
<script type="text/javascript" src="http://t.zoukankan.com/base64.js"></script>
<script type="text/javascript">  
        var b = newBase64();  
        var str = b.encode("admin:admin");  
        alert("base64 encode:" +str);  
     //解密
        str =b.decode(str);  
        alert("base64 decode:" +str);  
</script>  
</head>
<body>
</body>
</html>

base64.js

functionBase64() {
    //private property
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    //public method for encoding
    this.encode = function(input) {
        var output = "";
        varchr1, 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);
        }
        returnoutput;
    }
    //public method for decoding
    this.decode = function(input) {
        var output = "";
        varchr1, chr2, chr3;
        varenc1, 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);
        returnoutput;
    }
    //private method for UTF-8 encoding
    _utf8_encode = function(string) {
        string = string.replace(/
/g,"
");
        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);
            }
        }
        returnutftext;
    }
    //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;
            }
        }
        returnstring;
    }
}

原文:http://www.cnblogs.com/mofish/archive/2012/02/25/2367858.html

免责声明:文章转载自《js Base64与字符串互转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ubuntu 18.04 安装微信(附企业微信)常用的Maven 插件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS与CSS阻止元素被选中及清除选中的方法总结

有时候,我们希望阻止用户选中我们指定区域的文字或内容。 举个栗子,有时候用户在一个区域执行频繁的点击操作,一不小心傲娇地点多了,就会选中当前区域的内容。 再举个栗子,制作轮播组件的时候,点击下一页,若点击的快的话,浏览器会识别为双击。 双击的默认效果是选中整片区域,这时候轮播图组件就会被表示忧郁的蓝色幕布盖住,多忧桑啊~ 你看,这妹子多赞啊,可是你一紧张...

Soap流程

首先本文不对SOAP有过多的解释,你只需知道它是--简单对象访问协议,一种轻量的、简单的、基于 XML 的协议。举个例子,WebService其实就基于SOAP的。 再简单的说一下,SOAP就是打包-->发送-->收包-->处理-->返回包等一系列流程,在ASP.NET中可以使用MSXML2中的XMLHTTPClass类来创建SOA...

原有vue项目接入typescript

原有vue项目接入typescript 为什么要接入typescript javascript由于自身的弱类型,使用起来非常灵活。 这也就为大型项目、多人协作开发埋下了很多隐患。如果是自己的私有业务倒无所谓,主要是对外接口和公共方法,对接起来非常头疼。主要表现在几方面: 参数类型没有校验,怎么传都有,有时会出现一些由于类型转换带来的未知问题。 接口文档不...

pgsql 聚合函数array_to_string,ARRAY_AGG

array_to_string--将sql中的数组转为字符串 ARRAY_AGG--将sql中的数据转为数组处理 以下给大家一个简单的例子即可体会: 1.需求     2.数据库中原数据   1.png 3.sql的写法,以及运行结果   3.png 作者:那钱有着落吗链接:https://www.jianshu.com/...

js获取7天之前的日期或者7天之后的日期

js获取7天之前的日期或者7天之后的日期(网上摘取的,记录自己使用) function fun_date(num) { var date1 = new Date(); //今天时间 var time1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date...

HTML 用JS增加table一行所有内容的实现

    因为对JS用的不多,最近需要写界面的时候需要实现——通过点击一个button让table增加一行(和前面行内的内容一致,无论是dropdown还是checkbox)。可自己硬是无从下手,从网上搜的答案总是各有不同。最后自己通过这样的方法实现了: 步骤基本是这样的: 在script里面写一个Function如下。       最后就简单了,我们直接通...