js编码与解码base64自定义字符

网站技术 ayflying 308℃ 评论

使用js进行自定义字符表编码与解码

const BASE64_CHARS = "ABCabcdefghijklmnopqrstuvwxyzDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

/**
     * 编码base64自定义字符表
     * @param {Object} str
     */
    encode(str) {
        /*
        let code = CryptoJS.AES.encrypt(string, secretKey).toString();
        code = btoa(code)
        return code
        */

        let characters = BASE64_CHARS;
        let result = "";
        let binaryStr = "";
        for (let i = 0; i < str.length; i++) {
            let code = str.charCodeAt(i);
            binaryStr += code.toString(2).padStart(8, "0");
            while (binaryStr.length >= 6) {
                let index = parseInt(binaryStr.slice(0, 6), 2);
                binaryStr = binaryStr.slice(6);
                result += characters[index];
            }
        }
        if (binaryStr.length > 0) {
            let index = parseInt(binaryStr.padEnd(6, "0"), 2);
            result += characters[index];
        }
        return result;
    },
    /**
     * 解码base64自定义字符表
     * @param {Object} str
     */
    decode(str) {
        /*
        string = atob(string);
        var bytes  = CryptoJS.AES.decrypt(string, secretKey);
        return bytes.toString(CryptoJS.enc.Utf8);
        */
        let characters = BASE64_CHARS;
        let binaryStr = "";
        for (let i = 0; i < str.length; i++) {
            let index = characters.indexOf(str.charAt(i));
            if (index >= 0) {
                binaryStr += index.toString(2).padStart(6, "0");
            }
        }
        let result = "";
        for (let i = 0; i < binaryStr.length; i += 8) {
            let code = parseInt(binaryStr.slice(i, i + 8), 2);
            result += String.fromCharCode(code);
        }
        return result;

    }


转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » js编码与解码base64自定义字符

高效,专业,悠悠博客

联系我们