Multiple methods of using base64 encryption and decryption: including PC and WeChat applets

in different development environments. We need to use different methods for encryption and decryption

1. PC side

The Window object
The Window object represents an open window in the browser.
Usually when developing a PC-side browser. If you want to encrypt or decrypt it into a base-64 encoded string. We can all use object methods in the Window object:

atob() decodes a base-64 encoded string.
btoa() creates a base-64 encoded string

We can directly press f12 in the browser to open the console, copy and paste to see the effect:

var str = "RUNOOB";
var enc = window.btoa(str);
var dec = window.atob(enc);
enc;//加密后的结果是:"UlVOT09C"
//dec;//当我们再次把加密过的enc解密出来。结果仍然是"RUNOOB"

1. In the WeChat Mini Program

As we all know, the window object and document object cannot be used in the js of the WeChat applet.
Don't they really exist? But in fact, it's not.
In non-strict mode, it can be in the WeChat applet. Get the window object. But it is not recommended to do so.

The correct approach is:

1. Create a new base64.js file

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;
        }
}

2. Introduce in the page that needs to be used:

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

3. How to use:

	var str = 'hello world'
	let base64 = new Base64()
	//加密base64.encode	
	let jiami=base64.encode(str.toString())
	//解密base64.decode
	let jiemi=base64.decode(str.toString())

Guess you like

Origin blog.csdn.net/TKP666/article/details/131080231