1 Articles, Search Results for 'Information Theory'

  1. 2007/04/28 Base64 인코딩 원리 by ace (30)
올블로그를 보다가 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 인코딩이 된다.

Base64 Encoding Decoding

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 비트) 로 다시 복원시키면 된다.
2007/04/28 18:22 2007/04/28 18:22
Posted by ace.

Leave your greetings here.

  1. Comment RSS : http://par.sarang.net/rss/comment/369
  2. 남은주 2008/10/17 08:27  Modify/Delete  Reply  Address

    수업때문에 base64를 조사하게 되었는데
    설명이 너무 잘 되어 있어서 복사해 갑니다.

  3. naraengs 2008/11/24 20:21  Modify/Delete  Reply  Address

    정말 설명이 잘 되어 있네요~ ^^
    복사해갑니다. 감사합니다. ^^
    좋은 하루 되세요~ ^^

  4. 이진영 2008/11/27 20:56  Modify/Delete  Reply  Address

    좋은 정보 감사합니다^^ 참고하려고 담아갑니다.

  5. 이진영 2008/11/27 21:01  Modify/Delete  Reply  Address

    참고로 비공개로 담아갑니다^^

  6. 준배 2008/12/21 19:17  Modify/Delete  Reply  Address

    좋은정보 감사합니다~ 조금만 메모좀 하겠습니다~

  7. 날다람쥐 2009/02/11 20:44  Modify/Delete  Reply  Address

    잘 보고 갑니다. ^^* 참고하려고 담아가요~

  8. 지다현 2009/02/17 20:57  Modify/Delete  Reply  Address

    웹메일 만들면서 필요한 정보였는데 감사합니다.
    그런데 잘못된 정보가 있네요 문자셋 중에서
    -가 아니라 /인거 같습니다. 그럼 수고~

    • ace 2009/02/17 21:34  Modify/Delete  Address

      앗, 지적 감사합니다.
      /가 맞습니다. 머리로는 /로 생각하면서 + 다음에 무의식적으로 - 를 넣었나 봅니다.
      이 글을 쓴지 꽤 지났는데 그동안 눈에 뭐가 씌였는지 안 보였나 봅니다.
      다시 한번 잘못된 부분을 가르쳐 주신 것 감사드립니다.

  9. Thanks 2009/03/04 00:59  Modify/Delete  Reply  Address

    좋은 정보 감사합니다.

  10. 치토스 2009/03/06 03:57  Modify/Delete  Reply  Address

    잘 정리해 주셔서 감사합니다^^ 출처 밝히고 퍼갈께요~

  11. 퍼덕퍼덕 2009/03/22 06:48  Modify/Delete  Reply  Address

    좋은 정보 감사합니다 ^^
    출처밝히고 참고할게요 ^^

  12. theswlee 2009/04/01 02:26  Modify/Delete  Reply  Address

    좋은 정보 담아갈께요.
    감사합니다.

  13. Coolguy 2009/04/05 20:02  Modify/Delete  Reply  Address

    Base64에대한 기본적이면서도 명쾌한 설명이 압권입니다.
    정말 감사합니다^^

  14. 솽민군 2009/07/28 04:27  Modify/Delete  Reply  Address

    너무 쉽게 설명해주셔서 감사합니다.
    덕분에 큰 버그 하나를 짧은시간에 고칠 수 있었습니다.
    그래서 정시퇴근 가능할듯.ㅠㅠ

    스크랩 해가겠습니다.~

  15. 짱오리 2009/08/21 01:54  Modify/Delete  Reply  Address

    어렵게만 생각했는데, 쉬운 설명 덕에 쉽게 이해했습니다.
    좋은 정보 감사하고요, 제 블로그에 스크랩 해가겠습니다.

  16. dyp 2009/10/15 20:13  Modify/Delete  Reply  Address

    글 잘보고 갑니다^^

    나중에 참고 하기 위해서 제 블로그에 스크랩 해갈께요~

  17. aaims 2010/02/10 09:51  Modify/Delete  Reply  Address

    쉬운 설명 덕분에 쉽게 이해했습니다.
    너무 감사드려요 ^-^

[로그인][오픈아이디란?]