Base64 로 인코딩 한다는건
현재 쓰고 있는 2진수(0,1) 에서 64진수 (A ~ /)로
변경 한다는 의미로 볼 수 있습니다.
또한 기존 byte 를 8bit 기준으로
처리를 했지만 Base64의 64가 2^6 이므로
Byte를 6 Bit로 변경해서 처리한다는 말 입니다.
따라서 기존의 8 Bit 로 처리하던걸 6 Bit로
처리 하기 위해서는 6으로 나누어 떨어져야 하는데..
그 부분을 위해 우선 바이트를 24 Bit 단위로
나누고 시작합니다.
(8 과 6의 최소 공배수는 24 이므로..)
그 다음 나눠진 24 Bit를 다시 6 Bit 단위로
아래와 같이 쪼개 주는 것입니다.
예를 들어 ‘abc’ 라는 문자열을 입력 하게 되면
아래와 같이 ‘abc’에 해당 하는 8 Bit 단위의
숫자들을 2진수로 변경 해서 인식한다.
그 다음 인식된 8 Bit 들을
다시 6 Bit 단위로 끊어서 나눠주고
그에 해당하는 숫자를
아래 표에 있는 64진수 중에 하나로 변경합니다.
* 만약 문자가 24 Bit 가 되지 않을 때는
24 Bit 의 길이를 맞추되,
아래와 같이 나머지 값을 모두 0으로 패딩 합니다.
디코딩의 개념은 인코딩과 반대로
6 Bit 64진수로 나눠진 값들을
다시 8 Bit 2진수로 변경 하면 된다고
생각하시면 됩니다.
Base64 인코딩, 디코딩을 해볼 수 있는 사이트
http://ostermiller.org/calc/encode.html
출저 및 참조
http://blog.naver.com/xxrcn11?Redirect=Log&logNo=20134225481
'Programming > 자료구조,암호화' 카테고리의 다른 글
[알고리즘] 삽입 정렬 (Insertion Sort) 알고리즘 (0) | 2016.05.09 |
---|---|
[알고리즘] 버블 정렬 (Bubble Sort) 알고리즘 (0) | 2016.05.09 |
[알고리즘] 선택 정렬 (Selection Sort) 알고리즘 (0) | 2016.05.09 |
[알고리즘] A* (A Star) 길찾기 알고리즘 (0) | 2016.04.13 |
[알고리즘] RSA 공개키 알고리즘 (1) | 2015.03.25 |