<! 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 >> 6 및 63 | 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