base64 개념

 

 

base64는 데이터를 64종류의 인쇄 가능한 숫자만을 이용하여 인코딩하는 방식으로, 그 외의 문자를 처리할 수 없는 통신 환경에서 멀티바이트 문자나 이진 데이터를 처리하는 것을 목적으로 한다. A-Z, a-z, 0-9까지의 62개 문자와 +, /의 2가지 기호가 사용되며, 남은 부분을 포장하기 위한 패딩(padding)을 위해 = 기호가 사용된다.

 

 

 

base64 인코딩 원리

 

 

1. 문자열을 ASCII의 십진수로 변경한다.
2. 십진수를 8bit에 맞춰서 이진수로 표현한다.
3. 수치를 6bit 단위로 자른다. 뒤에 부족한 부분은 6bit를 맞추기 위해 0으로 채워넣는다.
4. 6bit의 이진수를 십진수로 변환한다.
5. 십진수를 base64 table의 문자로 변경한다.
6. base64는 24bit 그룹 수를 가지기 때문에 총 bit의 수를 24의 배수에 맞추어야 한다. 남은 부분을 포장하기 위한 패딩(padding)을 위해 = 기호가 사용된다. 원 문자열의 비트수 %3만큼 = 기호를 붙여준다.

 

 

 

base64 인코딩 예시

 

 

원리만 적어놓으면 이해하기 힘든 부분도 있을 수 있으니, 'ARGOS'로 예시를 들어 base64 인코딩을 해보았다.

 

1. 문자열을 ASCII의 십진수로 변경한다.

위의 아스키코드 표를 통해 ARGOS를 십진수로 변경하면, 각각 65 82 71 79 83이 된다.

2. 십진수를 8bit에 맞춰서 이진수로 표현한다.

위에서 나온 65 82 71 79 83을 8bit에 맞춰서 이진수로 변경하면, 각각 01000001 01010010 01000111 01001111 01010011이 된다.

3. 수치를 6bit 단위로 자른다. 뒤에 부족한 부분은 6bit를 맞추기 위해 0으로 채워넣는다.

위에서 나온 01000001 01010010 01000111 01001111 01010011를 6bit 단위로 자르면, 각각 010000 010101 001001 000111 010011 110101 0011이 나온다. 뒤에 0011은 4bit밖에 되지 않으므로, 6bit를 맞추기 위해 0으로 채워넣는다. 즉, 010000 010101 001001 000111 010011 110101 001100이 된다.

4. 6bit의 이진수를 십진수로 변환한다.

위에서 나온 010000 010101 001001 000111 010011 110101 001100를 십진수로 변환한다. 각각 16 21 9 7 19 53 12이 된다.


5. 십진수를 base64 table의 문자로 변경한다.

위의 base64 table을 통해 위에서 나온 16 21 9 7 19 53 12을 문자로 변경한다. 각각 Q V J H T 1 M이 된다.

 

6. base64는 24bit 그룹 수를 가지기 때문에 총 bit의 수를 24의 배수에 맞추어야 한다. 남은 부분을 포장하기 위한 패딩(padding)을 위해 = 기호가 사용된다. 원 문자열의 비트수 %3만큼 = 기호를 붙여준다.

위의 Q V J H T 1 M은 42bit이므로, 24의 배수인 48bit에 맞추어 6bit를 패딩 한다. 즉, 원 문자열의 비트수인 40%3인 1만큼 뒤에 = 기호를 붙여준다. 즉, 결론적으로 ARGOS를 base64로 인코딩하면 QVJHT1M=가 나오게 된다. 확실성을 위하여 base64 인코딩 사이트에서 확인해보았다.

 

이를 표로 만들면 다음과 같다.

 

 

 

 

 

 

Create by harnag_25

 

 

 

참고

http://terms.naver.com/entry.nhn?docId=3440158&cid=40942&categoryId=32828

http://cattool.tistory.com/9

http://blog.naver.com/jae1zzang/220163588084

http://blog.naver.com/fjrzlgnlwns/220018324874

http://coderstoolbox.net/string/#!encoding=base64&action=encode&charset=us_ascii

'WEB > Web' 카테고리의 다른 글

Proxy 서버와 조작  (0) 2017.12.18
페이지 이동 Loction.href  (0) 2017.11.20
자바스크립트 용어  (0) 2017.10.28
아스키 코드(ASCII)  (0) 2017.10.16
javascript indexOf 함수와 lastindexOf 함수  (0) 2017.09.25

초보자가 java를 이용해 html파일을 작성할 때 모르는 용어가 많아 어려움이 생길 수가 있다.

다음 코드는 java를 이용해 작성한 html파일들이다.

 

그래서 이번에는 처음 접하는 사람들을 위한 가장 기본적인 자바스크립트용어들을 알아보려고 한다.

 

- document.바꾸고싶은 부분.innerHTML="B"   //바꾸고 싶은 부분을 B로 변경해 준다.

 

- function 이름(변수) { 함수내용 }   // 함수를 선언한다.

 

- Math.round     //반올림

- Math.ceil        //올림

- Math.floor      //버림

- Math.random()*a   //0~a까지의 수가 무작위로 나온다.

 

- x.charCodeAt(a)    //x안에 있는 a번째 문자를 유니코드로 변환한다.

 

- fromCharCode(아스키코드)   //아스키코드를 문자로 변환한다.

 

- onmouseenter
마우스 포인터가 요소 또는 자식 요소 안으로 들어올 때 발생하는 이벤트로,

한 번 들어오면 다시 나갔다 들어오지 않는 한 계속 발생하지 않는다.

 

 

 

 

 

- onmouseover
onmouseout 의 반대 개념으로,
마우스 포인터가 요소 안으로 들어올 때 + 자식 요소 출입시 발생하는 이벤트로,

해당 영역을 벗어나지 않아도 자식 요소에 들어가거나 나올 때 발생한다.

 

- onmouseout
onmouseover 의 반대 개념으로,
마우스 포인터가 요소 밖으로 나갈 때 + 자식 요소 출입시 발생하는 이벤트로,
요소 영역을 벗어나지 않아도 자식 요소에 들어가거나 나올 때 발생한다.

 

- onmousemove
마우스 포인터가 요소 또는 자식 요소 위에서 움직일 때 발생하는 이벤트로,
요소 위에서 마우스를 움직이면 계속 발생한다.

 

- indexOf(문자) //   해당 문자가 몇번쨰 글자에 있는지 찾아내고,

일치하는 값이 없으면 -1을 반환함.

 

- substr
 + (X)   // X번째 문자부터 출력한다.
 + (X, Y)   // X번째 문자부터 Y개 출력한다.
 + (음수)   // 오른쪽부터 출력한다.

 

- x.replace("a","b") : x의 내용 중 a를 b로 바꾼다.

 

- focus() : 해당 요소에 포커스를 부여하여
텍스트 창의 경우 커서를 위치시켜 바로 입력가능

쉽게 말해, 마우스를 입력창에 클릭할 때 나타나는 깜박이는 표시를 말한다.
버튼의 경우, 엔터 기능을 한다.

 

- blur() : focus와 반대로 창의 경우에는, 최소화한다.

 

- alert(document.cookie="변수명 = 값") : 변수의 쿠키값을 변경한다.

 

 

 - created by dlrudfh

'WEB > Web' 카테고리의 다른 글

페이지 이동 Loction.href  (0) 2017.11.20
base64  (0) 2017.11.06
아스키 코드(ASCII)  (0) 2017.10.16
javascript indexOf 함수와 lastindexOf 함수  (0) 2017.09.25
HTTP(HyperText Transfer Protocol)이란?  (0) 2017.04.16

아스키 코드(ASCII)

 

 

 우리가 일상에서 사용하는 문자를 컴퓨터에서 표현하기 위해서는 문자를 디지털 형태로 바꿔주어야 한다. 처음에는 이와 같은 작업에 다양한 부호를 사용했는데, 다른 사용자와 사용하는 부호가 달라 호환되지 않는 문제가 발생했다. 이 문제를 해결하기 위해 표준 부호를 만들어 모두가 동일하게 사용하도록 했는데 그 대표적인 예 중 하나가 아스키 코드이다.

 

 

 아스키 코드(ASCII / American standard code for information interchange code)란 ANSI(국 표준 협회)에서 1962년 제정한 미국 표준 정보 교환 코드로, 후에 ANSI가 국제표준화기구(ISO)에 제안하여 이를 기반으로 국제부호체계가 만들어지기도 했다.

 

 아스키 코드는 7비트로 128(2의 7제곱)개의 문자를 표현할 수 있는 것이 특징이고 여기에 1비트의 패리티 비트를 추가하여 8비트로 사용한다. 이는 3개출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 이루어져 있으며 제어 문자들은 역사적인 이유로 남아 있고 대부분은 더 이상 사용되지 않는다. 이 중 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자로 이루어진다.

 

 

 

아스키 코드의 표기는 다음의 표를 따른다.

(표 출처 : http://www.theasciicode.com.ar/ )

 

 

하지만 이로는 세계 각국의 고유 언어를 표현하기에는 턱없이 부족했기 때문에 유니코드라는 또 다른 이진 코드가 개발되었는데, 유니코드는 아스키코드보다 훨씬 많은 6만 5536개(2의 16승)개의 문자를 표현할 수 있는 코드이다. 이를 사용하여 한글도 표현할 수 있다.

 

 

 

*패리티 비트 : 정보 전달과정에서 오류가 발생했는지 검사하기 위해 추가적으로 붙이는 비트

 

 

출처

http://www.newscj.com/news/articleView.html?idxno=455436

http://terms.naver.com/entry.nhn?docId=784747&cid=41828&categoryId=41828

http://penne.kr/220718441221

 

-create by yamcha

'WEB > Web' 카테고리의 다른 글

페이지 이동 Loction.href  (0) 2017.11.20
base64  (0) 2017.11.06
자바스크립트 용어  (0) 2017.10.28
javascript indexOf 함수와 lastindexOf 함수  (0) 2017.09.25
HTTP(HyperText Transfer Protocol)이란?  (0) 2017.04.16

+ Recent posts