안녕하세요 아즈라엘 입니다.
인터넷에 찾아보면 코드중에 Base64 를 사용하는 케이스가 많이 있습니다.
제가 알기로 Base64는 6비트 (2^6 = 64)로 이루어진 바이트 코드로 이를
아스키코드표에 맵핑하여 텍스트로 주고받는 케이스로 알고 있습니다.
용어사전에서는 아래와 같이 간단하게 설명되어 있군요..
base64는 바이너리 데이터를 아스키 텍스트로 변환하거나, 그의 반대로 변환하는 인코딩 방법으로서, MIME에 의해 사용되는 방법들 중 하나이다. base64는 4개의 7 비트 아스키 문자로서 표현되도록 원래의 데이터에서 각 3 바이트씩을 4개의 6 비트 단위로 나눈다. 이것은 파일 크기를 대체로 원래보다 약 1/3 정도 증가시킨다.
그런데 MIME 프로토콜을 사용하는 경우가 아닌데도.. Base64 인코딩을 하는 이유가 있을까요?
보안때문에?
이는 보안 알고리즘을 따로 적용하면 되지 않을까 싶은데요..
RSA, DES, AES, 기타등등..
제가 사용한 이유..
얼마전에 파일명을 암호화 하기 위해서 SHA-256으로 만든 해쉬코드를 문자로 표현하기 위해서 Base64 인코딩을 하여
스트링으로 뽑아내어 사용은 했었습니다.
그런데 아무리 봐도 통신상에서 왜에.. Base64를 써서 통신하는지 모르것네요.. 일반적인 네트웍에서 소켓 통신하는데
용량도 늘어나는 Base64를 적용했다면 이는 바보짓인가요? 아니면 제가 모르는 아주 중요한 작업을 한건가요?
비전공자로서 궁금한게 많은데 기반지식이 없어서 인터넷 뒤져 봐도 헷갈리기만 하네요..ㅎㅎ
보편적이라는 표현보다는 플랫폼 독립적으로 데이터 전송이 필요할때 인코딩 사용시 Base64 외에는 딱히 방법이 없습니다. 1 byte 문자 표현은 거의 모든 시스템에서 아스키로 약속되어 있으니까요. 그래서 그리 논쟁의 대상이 될 부분이 없습니다. (원리를 봐도, 64진수를 쓴다는 것도 아스키 해당 제약 사항에서 최대치를 잘 살린거라서 논쟁할 꺼리가 되지 않구요. )
그리고 왜 보편적인 표현을 지양하려고 하냐면, 웹에서 Data URI Scheme 를 사용하기에는 본문에 걱정하시는 것 처럼 데이터양이 너무 많아지기 때문에 별로 사용 안합니다.
저기 용어사전에 표시된 대로 2진 데이터를 ascii문자로 표시하기 위함이죠... 2진 데이터를 ascii로 표현해야 할 필요가 있을때 쓰는거에요...(예를들어 xml이나 http등이 있겠네요)