联系QQ 284710375
首页 > 技术分享 > 微信小程序
收藏

微信小程序使用base64加密解密2022-06-17 16:28:58

大潇博客 原创文章,转载请标明出处

在pc端对字符串进行base64加解密时,使用

var str="ABCDE";

var enc = window.btoa(str);

var dec = window.atob(enc);


微信小程序的js中不能使用window对象以及document对象,实际在非严格模式下,可以在微信小程序里,获取window对象,但是并不推荐这样做。


实现base64加密解密:

在“utils”目录下创建“base64.js”文件,保存以下代码

export default function Base64() {

        //私钥

        let _keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

        //加密

        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;

        }

        //解密

        this.decode =  (input)=> {

                var output = "";

                var chr1, chr2, chr3;

                var enc1, enc2, enc3, enc4;

                var i = 0;

                if (input==undefined||input==null){

                }else {

                        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

        let _utf8_encode =  (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

        let _utf8_decode = (utftext)=> {

                var string = "";

                var i = 0;

                var c = c1 = c2 = 0;

                var c1 = 0;

                var c2 = 0;

                var c3 = 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;

        }

}


在需要使用的页面引入:

import Base64 from "../../utils/base64.js";


使用方法:

let str="ABCDEFG";

let base64 = new Base64()

//加密base64.encode

let jiami=base64.encode(str),

//解密base64.decode

let jiemi=base64.encode(str),


下载地址:base64

打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311