在 uni項(xiàng)目中前端js處理base64字符串解碼編碼

最近接手的項(xiàng)目遵绰,后臺(tái)返回的字段是base64加密過(guò)了较曼,需要前端解密倾鲫,前端傳參的時(shí)候取冒號(hào)后面的然后再次加密傳參
首先呢贝搁,可以github下載base64的js文件
下面這個(gè)是我已經(jīng)修改過(guò)可以直接在項(xiàng)目中引用的

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

把以上js放在項(xiàng)目中
在用到的頁(yè)面

import Base64 from "../../../util/base64";
let base64 = new Base64()
let num = base64.encode('123:456')//編碼 MTIzOjQ1Ng==
let num1 = base64.decode(num)//解碼 '123:456'
let num2 = num1.split(":")[1] //截取冒號(hào)后面的字符串  '456'
console.log(num , num1,num2)
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末必逆,一起剝皮案震驚了整個(gè)濱河市怠堪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌名眉,老刑警劉巖粟矿,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異损拢,居然都是意外死亡陌粹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)福压,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掏秩,“玉大人或舞,你說(shuō)我怎么就攤上這事∶苫茫” “怎么了映凳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)邮破。 經(jīng)常有香客問(wèn)我诈豌,道長(zhǎng),這世上最難降的妖魔是什么抒和? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任矫渔,我火速辦了婚禮,結(jié)果婚禮上摧莽,老公的妹妹穿的比我還像新娘庙洼。我一直安慰自己,他們只是感情好范嘱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布送膳。 她就那樣靜靜地躺著,像睡著了一般丑蛤。 火紅的嫁衣襯著肌膚如雪叠聋。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天受裹,我揣著相機(jī)與錄音碌补,去河邊找鬼。 笑死棉饶,一個(gè)胖子當(dāng)著我的面吹牛厦章,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播照藻,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袜啃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了幸缕?” 一聲冷哼從身側(cè)響起群发,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎发乔,沒(méi)想到半個(gè)月后熟妓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栏尚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年起愈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抬虽,死狀恐怖官觅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阐污,我是刑警寧澤缰猴,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站疤剑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闷堡。R本人自食惡果不足惜隘膘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杠览。 院中可真熱鬧弯菊,春花似錦、人聲如沸踱阿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)软舌。三九已至才漆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佛点,已是汗流浹背醇滥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留超营,地道東北人鸳玩。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像演闭,于是被迫代替她去往敵國(guó)和親不跟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355