올블로그를 보다가 Base64 인코딩에 대한 글이 있어 읽어 보았다.
(http://blueiblog.com/ko/40)
윈도우즈 환경에서 쓰려고 그런 것 같은데 Base64 인코딩의 원리는 간단하므로
어떤 컴퓨팅 환경이던 원리만 알면 누구나 쉽게 코딩할 수 있으리라 생각된다.
Base64 인코딩 원리
우선 제목이 말하는 Base64의 의미가 무엇인지 살펴 보자.
베이스가 64라는 것은 모든 정보를 64진수로 표시한다는 것인데, 컴퓨터는 2진수를 사용하므로 64진수로 표시하기 위해서는
2^6 = 64 즉 6 비트 2진수 열이 필요하다.
그런데 대개 컴퓨터에서 가장 기본이 되는 정보 단위는 8 비트씩 엮어진 바이트이므로
6비트와 8비트가 각각 나누어 떨어질 수 있는 공배수의 최소값 (최소 공배수)를 구하면 24비트가 된다.
24비트는 8비트 바이트에서는 3바이트가 되고, 64진수로 나타내기 위한 6비트 단위로는 4 단위가 된다. (바이트라고 반복하기 말하면 혼동이 될 것 같아서 "단위"라는 말로 대치하였다.)
따라서 Base64의 인코딩 원리는 3바이트 단위마다 (즉 24비트 마다) 6비트씩 쪼개어서 6비트 짜리 문자 4개로 만드는 것이 되겠다.
이 때 6비트씩 쪼개진 단위를 A-Z a-z 0-9 + / (모두 64개 문자)로 각각 대응시키면 Base64 인코딩이 된다.

그런데 입력되는 정보가 모두 3바이트씩 떨어진다는 보장이 없으므로 3바이트로 나누어떨어지지 않는 경우 = 문자로 채우기를 한다. 즉 Base64로 인코딩 된 데이타에서 = 가 보이면 그 것은 다시 원래의 정보로 되돌아 갈때 (디코딩 될때) 아무 것도 없는 것이라는 소리가 된다.
(Base64로 인코딩 정보의 끝에 최대 나올 수 있는 = 의 수는 2개가 되겠다. 즉 끝부분에 =가 없거나 1개가 있거나 2개가 있는 것이 모두 나올 수 있는 경우가 되겠다.)
디코딩은 A-Z a-z 0-9 +- 문자를 각각 6비트의 정보로 바꾸어서 4 단위 (6*4=24 비트) 마다 합쳐서 3바이트 (3*8=24 비트) 로 다시 복원시키면 된다.
(http://blueiblog.com/ko/40)
윈도우즈 환경에서 쓰려고 그런 것 같은데 Base64 인코딩의 원리는 간단하므로
어떤 컴퓨팅 환경이던 원리만 알면 누구나 쉽게 코딩할 수 있으리라 생각된다.
Base64 인코딩 원리
우선 제목이 말하는 Base64의 의미가 무엇인지 살펴 보자.
베이스가 64라는 것은 모든 정보를 64진수로 표시한다는 것인데, 컴퓨터는 2진수를 사용하므로 64진수로 표시하기 위해서는
2^6 = 64 즉 6 비트 2진수 열이 필요하다.
그런데 대개 컴퓨터에서 가장 기본이 되는 정보 단위는 8 비트씩 엮어진 바이트이므로
6비트와 8비트가 각각 나누어 떨어질 수 있는 공배수의 최소값 (최소 공배수)를 구하면 24비트가 된다.
24비트는 8비트 바이트에서는 3바이트가 되고, 64진수로 나타내기 위한 6비트 단위로는 4 단위가 된다. (바이트라고 반복하기 말하면 혼동이 될 것 같아서 "단위"라는 말로 대치하였다.)
따라서 Base64의 인코딩 원리는 3바이트 단위마다 (즉 24비트 마다) 6비트씩 쪼개어서 6비트 짜리 문자 4개로 만드는 것이 되겠다.
이 때 6비트씩 쪼개진 단위를 A-Z a-z 0-9 + / (모두 64개 문자)로 각각 대응시키면 Base64 인코딩이 된다.

Base64 Encoding/Decoding
그런데 입력되는 정보가 모두 3바이트씩 떨어진다는 보장이 없으므로 3바이트로 나누어떨어지지 않는 경우 = 문자로 채우기를 한다. 즉 Base64로 인코딩 된 데이타에서 = 가 보이면 그 것은 다시 원래의 정보로 되돌아 갈때 (디코딩 될때) 아무 것도 없는 것이라는 소리가 된다.
(Base64로 인코딩 정보의 끝에 최대 나올 수 있는 = 의 수는 2개가 되겠다. 즉 끝부분에 =가 없거나 1개가 있거나 2개가 있는 것이 모두 나올 수 있는 경우가 되겠다.)
디코딩은 A-Z a-z 0-9 +- 문자를 각각 6비트의 정보로 바꾸어서 4 단위 (6*4=24 비트) 마다 합쳐서 3바이트 (3*8=24 비트) 로 다시 복원시키면 된다.
Trackback URL : http://par.sarang.net/trackback/369
-
Base64 인코딩의 원리
Tracked from BlueⓘBlog 2009/11/18 21:05
예전에 작성했던 글중 분실되었던 Base64인코딩 원리라는 글이 있었는데… A Golfer’s Dream님의 블로그에서 글을 발견하게 되어 다시 올려봅니다. 자료복원에 도움이 되어 주신 A Golfer’s Dream님께 감사를 드립니다. ==================================================================================== 윈도우즈 환경에서 쓰려고 그런...




Leave your greetings here.
수업때문에 base64를 조사하게 되었는데
설명이 너무 잘 되어 있어서 복사해 갑니다.
도움이 되었다니 기쁩니다.
정말 설명이 잘 되어 있네요~ ^^
복사해갑니다. 감사합니다. ^^
좋은 하루 되세요~ ^^
좋은 정보 감사합니다^^ 참고하려고 담아갑니다.
감사합니다.
참고로 비공개로 담아갑니다^^
좋은정보 감사합니다~ 조금만 메모좀 하겠습니다~
댓글 감사합니다.
잘 보고 갑니다. ^^* 참고하려고 담아가요~
댓글 감사합니다.
웹메일 만들면서 필요한 정보였는데 감사합니다.
그런데 잘못된 정보가 있네요 문자셋 중에서
-가 아니라 /인거 같습니다. 그럼 수고~
앗, 지적 감사합니다.
/가 맞습니다. 머리로는 /로 생각하면서 + 다음에 무의식적으로 - 를 넣었나 봅니다.
이 글을 쓴지 꽤 지났는데 그동안 눈에 뭐가 씌였는지 안 보였나 봅니다.
다시 한번 잘못된 부분을 가르쳐 주신 것 감사드립니다.
좋은 정보 감사합니다.
댓글 감사합니다.
잘 정리해 주셔서 감사합니다^^ 출처 밝히고 퍼갈께요~
댓글 감사합니다.
좋은 정보 감사합니다 ^^
출처밝히고 참고할게요 ^^
댓글 감사드립니다.
좋은 정보 담아갈께요.
감사합니다.
감사합니다.
Base64에대한 기본적이면서도 명쾌한 설명이 압권입니다.
정말 감사합니다^^
댓글 남겨 주신 것 감사드립니다.
너무 쉽게 설명해주셔서 감사합니다.
덕분에 큰 버그 하나를 짧은시간에 고칠 수 있었습니다.
그래서 정시퇴근 가능할듯.ㅠㅠ
스크랩 해가겠습니다.~
댓글 감사합니다.
어렵게만 생각했는데, 쉬운 설명 덕에 쉽게 이해했습니다.
좋은 정보 감사하고요, 제 블로그에 스크랩 해가겠습니다.
댓글 감사합니다.
글 잘보고 갑니다^^
나중에 참고 하기 위해서 제 블로그에 스크랩 해갈께요~
댓글 감사합니다.
쉬운 설명 덕분에 쉽게 이해했습니다.
너무 감사드려요 ^-^
댓글 감사합니다.