블록체인 관련 예제 혹은 암복호화 예제를 살펴보면 Base64인코딩과 디코딩을 진행하는 예제가 상당히 많다.
Base64 인코딩과 디코딩이 어떤 개념인지에 대해서 살펴보도록 하자.
인코딩은 주로 정보의 형태, 형식을 표준화하거나, 보안, 속도, 저장 공간 절약을 위해서 다른 형태로 바꾸는 처리 방식을 말한다고 보면 된다.
아주 간단하게 말하자면 Base64 인코딩이란 Binary Data를 Text로 바꿔주는 인코딩 방식이다.
Binary Data를 Character set 에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 하나의 문자열로 바꿔준다.
방식은 꽤나 간단한데 Binary Data 를 6비트씩 자른 뒤에 6비트에 해당하는 문자를 Base64 전용 색인표에서 찾아서 그것으로 바꾸어준다.
Base64 색인표는 아래와 같다.
참고로 Padding을 붙이는 과정이 추가적으로 있긴 하다고 한다.
Padding을 하는 경우는 주어진 단위대로 제대로 쪼개지지 않고 빈자리가 생겼을때 그 자리를 인코딩 이후에 '=' 으로 채운다고 한다. (Padding 은 쓸모없는 공간을 채운다는 뜻으로 해석된다.)
Base64 인코딩을 하게 되면 전송해야할 데이터 양이 33퍼센트 증가한다고 한다. 6비트당 2비트의 오버헤드가 발생하기 때문이다.
그런데 왜 Base64 인코딩을 쓸까?
이메일이나 HTML등을 이용해서 Binary Data를 전송할 필요가 있을때 그걸 ASCII로 인코딩하면 여러가지 문제가 생길 수 있는 것이 Base64를 쓰는 핵심 이유이다.
ASCII가 7비트 인코딩인데 나머지 1비트를 처리하는 방식이 시스템마다 다 다르다고 한다. 또한 제어문자 중 일부도 시스템 별로 코드 값이 다르다고 한다.
그래서 ASCII가 시스템간 데이터 전달에 안전하지 않아서 Base64가 ASCII의 제어문자와 일부 특수문자를 제외해서 64개내에서만 출력되게 함으로써 안전하게 만들어주는 것이다.
그래서 한 줄로 정리하자면 아래와 같다.
" Base64는 HTML 또는 Email과 같은 문자를 위한 미디어에 Binary Data를 포함해야할 필요가 있을때, 포함된 Binary Data가 시스템 독립적으로 동일하게 전송 또는 저장되는걸 보장하기 위해 사용한다. "
아래 블로그에서 많은 도움을 받았다.
감사합니다.
https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80
'Blockchain' 카테고리의 다른 글
[Blockchain] 라인 블록체인 영상 (LINE Blockchain에서도 프로그램을 실행) (0) | 2022.11.03 |
---|---|
[Blockchain] 블록체인 확장성 이슈 관련 영상 요약 (0) | 2022.10.31 |
[Blockchain] [작성 중...] Bitcoin: A Peer-to-Peer Electronic Cash System - by Satoshi Nakamoto 의 번역 및 정리 (0) | 2022.10.29 |
[Blockchain] 블록체인과 P2P네트워크 그리고 분산 시스템 (0) | 2022.10.29 |
[Blockchain] MerkleTree 코드 분석 및 구현 with Java (0) | 2022.10.27 |