(자바스크립트) Base64 인코딩/디코딩 소스(UTF-8 지원) > Html & Script

본문 바로가기
사이트 내 전체검색


회원로그인

오늘 447
어제 388
최대 618
전체 399,493
마음을 나누는 인터넷 일기장 - 통플 다이어리
Html & Script

(자바스크립트) Base64 인코딩/디코딩 소스(UTF-8 지원)

페이지 정보

작성자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-06-20 11:46 조회366회 댓글0건

본문

자바스크립트 기반 Base64 인코딩/디코딩 예제를 소개합니다.

UTF-8도 지원하고 있어서 한글도 잘 처리됩니다.

잘 활용하셨으면 좋겠습니다.


<script>
var Base64 = {
    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
 
        input = Base64._utf8_encode(input);
 
        while (i < input.length) {
 
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
 
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3<< 4| (chr2 >> 4);
            enc3 = ((chr2 & 15<< 2| (chr3 >> 6);
            enc4 = chr3 & 63;
 
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
 
            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
        }
 
        return output;
    },
 
    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
 
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
        while (i < input.length) {
 
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
 
            chr1 = (enc1 << 2| (enc2 >> 4);
            chr2 = ((enc2 & 15<< 4| (enc3 >> 2);
            chr3 = ((enc3 & 3<< 6| enc4;
 
            output = output + String.fromCharCode(chr1);
 
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
 
        }
 
        output = Base64._utf8_decode(output);
 
        return output;
 
    },
 
    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
 
        for (var n = 0; n < string.length; n++) {
 
            var c = string.charCodeAt(n);
 
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127&& (c < 2048)) {
                utftext += String.fromCharCode((c >> 6| 192);
                utftext += String.fromCharCode((c & 63| 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12| 224);
                utftext += String.fromCharCode(((c >> 6& 63| 128);
                utftext += String.fromCharCode((c & 63| 128);
            }
 
        }
 
        return utftext;
    },
 
    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
 
        while ( i < utftext.length ) {
 
            c = utftext.charCodeAt(i);
 
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191&& (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31<< 6| (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15<< 12| ((c2 & 63<< 6| (c3 & 63));
                i += 3;
            }
 
        }
 
        return string;
    }
}
 
// 인코딩, 디코딩 예제
alert(Base64.encode("안녕하세요")); // 인코딩되어 7JWI64WV7ZWY7IS47JqU 출력됨
alert(Base64.decode("7JWI64WV7ZWY7IS47JqU")); // 디코딩되어 안녕하세요 출력됨
</script>


 




출처: http://nine01223.tistory.com/340 [스프링연구소(spring-lab)] 

추천 0

댓글목록

등록된 댓글이 없습니다.

Html & Script 목록

Total 192건 1 페이지
Html & Script 목록
번호 제목 글쓴이 날짜 조회 추천
공지 유니코드의 명칭과 속성 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-13 38312 38
191 [jQuery] preventDefault(), stopPropagation() 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-22 198 0
190 소스보기 막기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-22 388 0
열람중 (자바스크립트) Base64 인코딩/디코딩 소스(UTF-8 지원) 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-20 367 0
188 jquery iframe 제어하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-08 390 0
187 [펌] Web Worker - 웹에서 멀티 쓰레드 구현하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-10 369 0
186 CSS Text & Viewport units 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-20 872 0
185 자바스크립트 replace / 문자열 변경하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-06 2517 0
184 날짜 및 시간 계산(JavaScript) 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11-29 2846 0
183 동적으로 select의 option생성하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-21 3563 0
182 css ul li 가로 정렬 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-06 3205 0
181 자바스크립트 Attr 속성 추가 ,삭제, 조회하기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-29 7614 0
180 오른쪽 마우스 클릭막기, 우클릭금지 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-29 3270 0
179 색상 코드표 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-19 2893 0
178 자바스크립트 in_array() 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 08-31 2010 0
177 (Jquery) radio checked 라디오 제어 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-21 2876 0
176 자바스크립트 날짜 차이 계산 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-13 2519 0
175 [AJAX] 1초마다 데이터 불러오기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-06 3178 0
174 Load Results From Database On Page Scroll Using jQ… 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-06 2705 0
173 [CSS] placeholder 컬러바꾸기 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-06 2869 0
게시물 검색

Copyright © nuno21.net All rights reserved. 상단으로
모바일 버전으로 보기