インクリメンタル技術base64での暗号化と復号化のJS指定された数

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 ;  
            }   
        }   
        戻り値のストリング。  
    }   
}

 

おすすめ

転載: www.cnblogs.com/wrongcode/p/11315198.html