符号化と復号化はJavaScriptをBase64を使用して実装

私たちは知っている、ウィンドウオブジェクトブラウザはwindow.atob()とwindow.btoa()メソッド缶列をBase64でエンコードとデコードを提供します。

console.log(window.btoa(window.atob( 'yanggb')));

UTF-8エンコーディング機能

関数はutf8_encode(文字列){
    列= string.replace(/ \ R \ n / gで、 '\ n');
    utfText =「」ましょう。
    ため(LET n = 0であり、n <String.lengthです; N ++){
        C =に、String.charCodeAt(N)とします。
        IF(C <128){
            utfText + =に、String.fromCharCode(C);
        }そうであれば((C> 127)&&(C <2048)){
            utfText + =に、String.fromCharCode((C >> 6)| 192)。
            utfText + =に、String.fromCharCode((C&63)| 128)。
        }他{
            utfText + =に、String.fromCharCode((C >> 12)| 224)。
            utfText + =に、String.fromCharCode(((C >> 6)&63)| 128)。
            utfText + =に、String.fromCharCode((C&63)| 128)。
        }

    }
    utfTextを返します。
}

UTF-8デコード機能

関数utf8_decode(utfText){
    "文字列="ましょう。
    私は= 0ましょう。
    C = 0ましょう。
    C1 = 0ましょう。
    C2 = 0ましょう。
    C3 = 0ましょう。
    (I <utfText.length){ながら
        C = utfText.charCodeAt(I)。
        IF(C <128){
            ストリング+ =に、String.fromCharCode(C);
            I ++;
        }そうであれば((C> 191)&&(C <224)){
            C2 = utfText.charCodeAt(I + 1)。
            ストリング+ =に、String.fromCharCode(((C&31)<< 6)|(C2&63))。
            I + = 2;
        }他{
            C2 = utfText.charCodeAt(I + 1)。
            C3 = utfText.charCodeAt(I + 2)。
            ストリング+ =に、String.fromCharCode(((C&15)<< 12)|((C2&63)<< 6)|(C3&63))。
            I + = 3;
        }
    }
    文字列を返します。
}

Base64エンコード機能

エクスポートCONSTエンコード=(入力)=> {
    せて出力= "";
    CHR 1、ChR2を、CHR 3、ENC1、ENC2、ENC3、enc4てみましょう。
    私は= 0ましょう。
    入力=はutf8_encode(入力)。
    一方、(I <input.length){
        CHR 1 = input.charCodeAt(I ++)。
        ChR2を= input.charCodeAt(I ++);
        CHR3 = input.charCodeAt(I ++);
        ENC1 = CHR 1 >> 2。
        ENC2 =((CHR 1&3)<< 4)| (ChR2を>> 4);
        ENC3 =((ChR2を&15)<< 2)| (CHR3 >> 6)。
        enc4 = CHR 3&63;
        IF(ますisNaN(ChR2を)){
            ENC3 = enc4 = 64。
        }そうであれば(ますisNaN(CHR 3)){
            enc4 = 64。
        }
        出力=出力+
        input.charAt(ENC1)+ input.charAt(ENC2)+
        input.charAt(ENC3)+ input.charAt(enc4)。
    }
    出力を返します。
}

Base64でデコードする機能

エクスポートCONSTデコード=(入力)=> {
    せて出力= "";
    CHR 1、ChR2を、CHR 3を聞かせて。
    ENC1、ENC2、ENC3、enc4をしましょう。
    私は= 0ましょう。
    入力= input.replace(/ [^ A-ZA-Z0-9 \ + \ / \ =] / gで、 "");
    一方、(I <input.length){
        ENC1 = input.indexOf(input.charAt(I ++))。
        ENC2 = input.indexOf(input.charAt(I ++));
        ENC3 = input.indexOf(input.charAt(I ++));
        enc4 = input.indexOf(input.charAt(I ++));
        CHR 1 =(ENC1 << 2)| (ENC2 >> 4);
        ChR2を=((ENC2&15)<< 4)| (ENC3 >> 2)。
        CHR3 =((ENC3&3)<< 6)| enc4;
        出力=出力+に、String.fromCharCode(CHR 1)。
        (ENC3!= 64)であれば{
            出力=出力+に、String.fromCharCode(ChR2を)。
        }
        IF(!enc4 = 64){
            出力=出力+に、String.fromCharCode(CHR 3)。
        }
    }
    出力= utf8_decode(出力)。
    出力を返します。
}

おすすめ

転載: www.linuxidc.com/Linux/2019-11/161530.htm