자바 스크립트 base64로 암호화 및 암호 해독

 

<! DOCTYPE HTML> 
<HTML LANG = " EN " > 
<head> 
    <메타 캐릭터 = " UTF-8 " > 
    <TITLE> www.jb51.net aes.js </ TITLE> 
</ head> 

<body> 
<script > // Base64로 Objectvar 만들기 
  를 Base64 = { 
  _keyStr을 : " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / = " , 
  인코딩 : 함수 (E) { var에 t = "" ;
    VAR의 N, R, I, S, O, U하는;
    VAR의 F = 0 ;
  
    Base64._utf8_encode (E);
    반면 (F < e.length) { 
      N = e.charCodeAt (F ++ ); 
      R = e.charCodeAt (F ++ );  = e.charCodeAt (F ++ ); 
      S = N >> 2 ; 
      O = (N & 3 ) << 4 | R >> 4 ; 
      U = (R 15 ) << 2 | I >> 6 ; = 1 & 63 ;
      경우 (때는 isNaN (R)) { 
        U = A = 64 
      }다른  경우 (때는 isNaN (I)) { = 64 
      } 
      t = t +  ._keyStr.charAt (S) +  ._keyStr.charAt (O) +  ._keyStr.charAt (U) + ._keyStr.charAt ( a) 
    } 
    리턴 t 
  }, 
  디코드 : 함수 (E) { 
    var에 t = "" ;
    VAR의 N, R, I;
    VAR의 S, O, U하는;
    VAR의 F = 0 ; 
    E = e.replace (/ [^ A-ZA-z0- 9 + / =] / g, "" );
    동안(F < e.length) { 
      S =  ._keyStr.indexOf (e.charAt (F ++ )); 
      O =  ._keyStr.indexOf (e.charAt (F ++ )); 
      U =  ._keyStr.indexOf (e.charAt (F ++ )); =  ._keyStr.indexOf (e.charAt (F ++ )); 
      N 개의 S 인 << 2 | O >> 4 ; 
      R = (O & 15 ) << 4 | U >> 2 ; 
      I = (U & 3 ) << 6 | 에이;= t + 대신 String.fromCharCode (N);
      만약 (U! = 64 ) { 
        t = t + 대신 String.fromCharCode (R) 
      } 
      의 경우 (a! = 64 ) { 
        t = t + 대신 String.fromCharCode (I) 
      } 
    } 
    t = Base64._utf8_decode (t);
    리턴 t 
  } _utf8_encode : 함수 (E) { 
    E = e.replace (/ RN / g, " N " );
    var에 t = "" ;
     ( VAR의 N = 0; N <e.length; N ++ ) {
       var에 R = e.charCodeAt (N);
      경우 (R < 128 ) { 
        t + = 대신 String.fromCharCode (R) 
      } 다른  경우 (R> 127 && R < 2048 ) { 
        t + = 대신 String.fromCharCode (R >> 6 | 192 ); 
        t + = 대신 String.fromCharCode (R 63 | 128 ) 
      } 다른 { 
        t + = 대신 String.fromCharCode (R >> 12 | 224 );
        t + = 대신 String.fromCharCode (R >> 663 | 128 ); 
        t + = 대신 String.fromCharCode (R 63 | 128 ) 
      } 
    } 
    리턴 t 
  } _utf8_decode : 함수 (E) { 
    var에 t = "" ;
    VAR의 N = 0 ;
    VAR R = C1 = C2 = 0 ;
    동안 (N < e.length) { 
      R = e.charCodeAt (N);
      경우 (R < 128 ) { 
        t + =대신 String.fromCharCode (R); 
        N ++ 
      } 다른  경우 (R> 191 && R < 224 ) { 
        C2 = e.charCodeAt (N + 1 ); 
        t + = 대신 String.fromCharCode ((R 31 ) << 6 | C2 및 63 ); 
        N + = 2 
      } 다른 { 
        C2 = e.charCodeAt (N + 1 ); 
        C3 = e.charCodeAt (N은 + 2 ); 
        t + = 대신 String.fromCharCode ((R 15 ) << 12| (C2 및 63 ) << 6 | C3 및 63 ); 
        N + = 3 
      } 
    } 
    반환 t 
  } 
} 

// 문자열 정의 
var에  문자열 = ' 안녕하세요 세계! ' ;
// 문자열 인코딩 
var에 encodedString = Base64.encode ( 문자열 ); 
CONSOLE.LOG (encodedString); // 출력 : "SGVsbG8gV29ybGQh"
 // 문자열 디코딩 
var에 decodedString = Base64.decode (encodedString를); 
CONSOLE.LOG (decodedString);// ! "헬로 월드"출력 

// Base64로 개체 정의의 문자는 라틴 문자로 제한도 없습니다 트랜스 코딩 할 수있다; 
var에  문자열 = " ! 헬로, CCCCC " ;
 var에 encodedString = Base64.encode ( 문자열 ); // "SGVsbG8sIOS4reWbve 8gQ == +" 
CONSOLE.LOG (encodedString)
 VAR의 decodedString = Base64.decode (encodedString) 
CONSOLE.LOG (decodedString) 
CONSOLE.LOG ( " hahahhaha " );
 </ script> 

</ body> 
</ HTML>

 

 

참조 :

https://www.cnblogs.com/songzhixue/p/11253243.html

https://www.cnblogs.com/chenglee/p/9037265.html

https://www.cnblogs.com/sunyuweb/p/9092367.html

추천

출처www.cnblogs.com/sea-stream/p/11517821.html