1. Base64 인코딩이란??
Base 64은 64진법이라는 뜻입니다.
64는 2의 6 제곱(2^6)으로, 2의 제곱수 중 화면에 표시되는 ASCII 문자들의 개수입니다.
0부터 63까지 각각 문자를 지정해준 후, 그에 맞게 문자를 치환하는 방식을 사용합니다.
즉, Base 64 인코딩은 이진 데이터를 ASCII 문자열로 바꾸는 인코딩 방식을 의미합니다.
2. Base64 인코딩의 원리
Base64의 인코딩하기 위해서는 Base64 색인표가 필요합니다.

이 색인표를 기반으로 숫자를 문자로 치환하는 것이 Base64 인코딩의 핵심입니다.
예를 들어 'POCI'라는 문자를 Base64로 인코딩한다고 가정합시다.
P, O, C, I는 각각 ASCII 문자로 80, 79, 67, 73입니다.
80, 79, 67, 73을 8비트 2진수로 바꾸면
80 : 01010000
79 : 01001111
67 : 01000011
73 : 01001001
으로, 이를 나열하면 01010000010011110100001101001001입니다.
이제 이 2진수 배열을 6비트로 나누어줍니다.
그러면
010100
000100
111101
000011
010010
010000 (6비트로 나누어지지 못한 건 뒤에 0을 넣어줘서 6비트로 맞춥니다.)
이 됩니다.
6비트로 나뉜 2진수를 다시 10진수로 변환하면
010100 : 20
000100 : 4
111101 : 61
000011 : 3
010010 : 18
010000 : 16
이 되고, 변환된 10진수를 위에 Base64 색인표를 보고 문자로 치환시키면
20 : U
4 : E
61 : 9
3 : D
18 : S
16 : Q
가 됩니다.
여기서 끝이 아니라, 아까 위에서 6비트로 나뉘지 못해서 0을 넣어준 것을 표시해줘야 합니다.
Base64에서는 이를 =로 표현합니다.
아까 남는 수가 01 2개이므로 = 두 개를 뒤에 붙여줍니다.
따라서 POCI를 Base64로 인코딩한 값은 UE9DSQ==가 됩니다.

http://www.taeyo.pe.kr/base64.htm에서 확인한 결과 제대로 인코딩했음을 알 수 있습니다.

3. 디코딩
디코딩은 인코딩의 반대 개념입니다.
즉, Base64 디코딩은 문자열을 이진 데이터로 바꾸는 것을 의미합니다.
디코딩하는 방법 역시 인코딩 방법을 역으로 따라가면 됩니다. 디코딩하는 방법은 직접 구해보시길 바랍니다.
'보안 기술 > 암호' 카테고리의 다른 글
해쉬함수(Hash function) (0) | 2019.12.05 |
---|