JS의 base64로 암호 해독

디코드 (입력) { 
VAR _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / ='
VAR 출력 = '
VAR의 chr1, chr2, CHR3의
VAR의 ENC1, ENC2 (10c), enc3, enc4의
VAR I = 0
VAR 재 = / [^ A-ZA-Z0-9 \ + \ / \ =] / g;
입력 input.replace = (재 '')
동안 (나는 input.length를 <) {
ENC1 = _keyStr.indexOf (input.charAt는 (i ++))
ENC2 (10c) = _keyStr.indexOf (input.charAt는 (i ++))
enc3 = _keyStr. 같이 IndexOf (input.charAt는 (i ++))
enc4 = _keyStr.indexOf (input.charAt는 (i ++))
chr1 = (ENC1 << 2) | (ENC2 (10c) >> 4)
chr2 = ((ENC2 (10c) 및 (15)) << 4) | (enc3 >> 2)
CHR3 = ((enc3 & 3) << 6) | enc4
출력 = 출력 문자열 +.
(enc3! == 64) {경우
출력 = + 출력 대신 String.fromCharCode (chr2)
}
의 경우 (enc4! == 64) {
출력 = + 출력 대신 String.fromCharCode (CHR3)
}
}
출력 this._utf8_decode = (출력)
창 출력
}
_utf8_decode (utftext) {
'= 문자열하자
I = 0하도록
하자 C = O
하자 C2 = 0
하자 C3 = 0 인
동안 (나는 utftext.length를 <) {
C = utftext.charCodeAt (I)
의 경우 (C < 128) {
문자열 + = 대신 String.fromCharCode (c)
나 ++
} 다른 경우 ((c> 191) && (c <224)) {
C2 = utftext.charCodeAt (I + 1)
스트링 대신 String.fromCharCode + = (((c & 31) << 6) | (C2 및 63))
I + = 2
한다} else {
C2가 utftext.charCodeAt = (I + 1)
C3 = utftext.charCodeAt는 (i + 2 )
스트링 대신 String.fromCharCode + = (((c & 15) << 12) | ((C2 및 63) << 6) | (C3 및 63))
내가 + = 3
}
}
반환 문자열
}

추천

출처www.cnblogs.com/JiaFanFan/p/11236338.html