base64 알고리즘에 관하여
2019.08.01 Thu 17:02
굉장히 오랫만에 일지를 씁니다.
그 이전에 글 자체도 굉장히 오랫만에 쓰는 것같군요.
자주 일지를 남겨보겠다는 취지로 첫 글을 올린지 거의 3달만이군요.
글 자체는 2주만인가요?
어쨌든 이번 일지에서는 방금 전에 프로젝트에 사용될 코드를 만드느라 잠시 base64 알고리즘을 구현할 일이 있었는데, 이것도 일지로 적어보면 괜찮을 것 같다는 생각이 들어서 써봅니다.
이번에 소개할 것은 base64라는 간단한 암호화 기법입니다:)
base64는 바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어졌는데요.
여기서 ASCII 문자 하나가 64진법의 숫자 하나를 의미하기 때문에 base64라고 부릅니다.
원리는 간단합니다. 8비트짜리 바이트 3개를 6비트씩 4개로 쪼개어 base64코드 4개로 바꿉니다.
그리고 base64 코드를 4글자 단위로 만들고, 빈부분을 '=' 문자로 채워둡니다.
예를들어 Ny4N을 인코딩해보면 이렇게됩니다.
6비트로 나누어떨어지도록 아무것도 없는 값을 채우고, 그 남는 공간만큼을 =으로 채우게 됩니다.
그래서 Ny4N을 base64로 인코딩하면, Tnk0Tg==이 됩니다.
변환 값을 암호문으로 바꾸는 변환표는 000000부터 순차적입니다.(단, 빈 공간을 채우기 위해 들어간 값은 =으로 구분합니다.)
이를 이용하여 심심풀이삼아 base64를 c언어로 구현해보았는데, 이는 개인개발자료에서 다루도록하겠습니다:)