텍스트와 Base64를 서로 변환합니다. 한글도 정상 처리되며, 입력값은 브라우저 밖으로 나가지 않습니다.
임의의 데이터를 영문자·숫자·+·/ 64가지 글자로만 표현하는 인코딩입니다. 이미지 같은 바이너리를 텍스트만 다룰 수 있는 곳(이메일 본문, JSON, YAML)에 담기 위해 만들어졌습니다.
3바이트를 4글자로 바꾸기 때문에 데이터 크기가 약 33% 늘어납니다. 그래서 큰 파일을 Base64로 실어 나르는 것은 비효율적입니다.
Base64는 누구나 되돌릴 수 있는 인코딩이지 암호화가 아닙니다. 비밀번호를 Base64로 바꿔 저장하는 것은 평문 저장과 다를 바 없습니다. 쿠버네티스 Secret의 값이 Base64인 것도 같은 이유로 "보안"이 아니라 "바이너리를 YAML에 담기 위한 장치"입니다.
=는 무슨 뜻인가요?패딩입니다. 원본 길이가 3의 배수가 아닐 때 4글자 단위를 맞추려고 붙입니다. =가 1~2개 붙거나 없을 수 있으며, 개수 자체에 의미가 있는 것은 아닙니다.
표준 Base64의 +와 /는 URL에서 특별한 의미가 있어 그대로 쓰면 깨집니다. 그래서 URL이나 파일명에 넣을 때는 각각 -와 _로 바꾼 URL-safe Base64를 씁니다. JWT가 이 방식을 씁니다.
Base64는 바이트를 다루는 방식이라 문자 인코딩을 먼저 정해야 합니다. 한글을 UTF-8로 바꾼 뒤 Base64로 인코딩해야 하는데, 옛 도구 중에는 EUC-KR로 처리하거나 브라우저의 btoa()를 그대로 써서 한글에서 오류가 나는 경우가 있습니다. 이 도구는 UTF-8로 처리합니다.
echo -n '안녕하세요' | base64
echo '7JWI64WV7ZWY7IS47JqU' | base64 -d
# 개행 없이 한 줄로 (긴 문자열일 때)
echo -n '내용' | base64 -w 0