VaRのベース= 新しい新規のBase64(); VARの STR = 'userzl271_123456_143882372' ; VARのコード= 8; // 定数 VARの結果=エンコード(base.encode(STR)、コード); // ベースは、8つの暗号化インクリメント はconsole.logを(結果); VARの結果2 = base.decode(デコード(結果コード)); // 増分ベース8解読 はconsole.log(結果2)を; // 暗号化、復号アルゴリズムパッケージ: 機能コード(コンテンツ、コード){ VARの STRを= '' ; のための(VAR ; Iはcontent.lengthを<I ++はI = 0 ){ VAR calAscii =content.charCodeAt(I); もし(calAscii> = 65 && calAscii <= 90 ){ calAscii + = コード。 もし(calAscii> 90)calAscii - = 26 。 } であれば(calAscii> = 97 && calAscii <= 122 ){ calAscii + = コード。 もし(calAscii> 122)calAscii - = 26 。 } STR + = に、String.fromCharCode(calAscii)。 } 戻りSTR。 } 関数デコード(結果コード){ STR = '' ; 以下のための(するvar i = 0; <result.length; 私は++ ){ VAR calAscii = result.charCodeAt(I)。 もし(calAscii> = 65 && calAscii <= 90 ){ calAscii - = コード。 もし(calAscii <65)calAscii + = 26 。 } の場合(calAscii> = 97 && calAscii <= 122 ){ calAscii - = コード。 もし(calAscii <97)calAscii + = 26 。 } のStr + = に、String.fromCharCode(calAscii)。 } 戻りSTR。 } 機能Base64で(){ // 私有財産 _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / =" ; // 符号化するためのパブリックメソッド この .encode = 関数(入力){ VARの出力= "" ; VaRのCHR1、ChR2は、CHR 3、ENC1、ENC2、ENC3、enc4。 するvar i = 0 ; 入力 = _utf8_encode(入力)。 一方(iは< input.length)を{ CHR 1 = input.charCodeAt(iは++ )。 ChR2を = input.charCodeAt(I ++); CHR3 = input.charCodeAt(私は++ ); ENC1 = CHR 1 >> 2 。 ENC2 =((CHR 1&3)<< 4)| (ChR2を>> 4 ); ENC3 =((ChR2を&15)<< 2)| (CHR3 >> 6 )。 enc4 = CHR 3&63 ; もし(ますisNaN(ChR2を)){ ENC3 = enc4 = 64 。 } そう であれば(ますisNaN(CHR 3)){ enc4 = 64 。 } 出力 =出力+ _keyStr.charAt(ENC1)+ _keyStr.charAt(ENC2)+ _keyStr.charAt(ENC3) + _keyStr.charAt(enc4)。 } 戻り出力と、 } // 復号するための公開方法 この .decode = 関数(入力){ VARの出力= "" ; VaRのCHR1、ChR2は、CHR 3。 VaRのENC1、ENC2、ENC3、enc4。 するvar i = 0 ; 入力 = input.replace(/ [^ A-ZA-Z0-9 \ + \ / \ =] / gで、 "" ); 一方(iは< input.length)を{ ENC1= _keyStr.indexOf(input.charAt(iは++ ))。 ENC2 = _keyStr.indexOf(input.charAt(私は++ )); ENC3 = _keyStr.indexOf(input.charAt(私は++ )); enc4 = _keyStr.indexOf(input.charAt(私は++ )); 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を)。 } もし(!enc4 = 64 ){ 出力 =出力+ に、String.fromCharCode(CHR 3)。 } } 出力 = _utf8_decode(出力)。 戻り値の出力; } // UTF-8符号化のためのプライベートメソッド _utf8_encode = 関数(文字列){ 列 = string.replace(/ \ R \ n / gで、 "\ n" ); VaRの utftext = "" ; 用(VAR n = 0であり、n <String.lengthです; N ++){ VARの C = に、String.charCodeAt(N)。 もし(C <128 ){ utftext + = に、String.fromCharCode(C); } そう であれば((C> 127)&&(C <2048 )){ utftext + =に、String.fromCharCode(6)(C >> | 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){ VARの文字列= "" ; するvar i = 0 ; VAR C = C1 = C2 = 0 。 一方(iは< utftext.length)を{ C = utftext.charCodeAt(I)。 もし(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&)); I + = 3 ; } } 戻り値のストリング。 } }