Base85 인코더·디코더
텍스트나 16진수 바이트를 Base85로 인코딩하고 다시 디코딩합니다. PDF와 PostScript의 Ascii85, 파이썬과 Git이 쓰는 RFC 1924 알파벳, ZeroMQ의 Z85를 지원합니다.
Base85는 4바이트를 출력 가능한 문자 5개로 담기 때문에 인코딩된 데이터가 25%만 늘어나 Base64의 33%보다 적게 늘어납니다. 이 도구는 텍스트나 원시 16진수 바이트를 인코딩하고 다시 디코딩하며, 자주 만나는 알파벳 세 가지를 지원합니다. PDF와 PostScript 스트림의 Ascii85, 파이썬 base64.b85encode와 Git 바이너리 패치가 쓰는 RFC 1924 알파벳, ZeroMQ의 Z85입니다.
사용 방법
- 인코딩과 디코딩 중 하나를 고릅니다.
- 작업 중인 시스템이 쓰는 변형을 고릅니다.
- 인코딩할 텍스트나 16진수 바이트, 또는 디코딩할 Base85 문자를 붙여 넣습니다.
- Ascii85에서는 필요하면 <~ ~> 구분자나 줄 길이를 추가합니다.
계산식
N = b₁×256³ + b₂×256² + b₃×256 + b₄ = c₁×85⁴ + c₂×85³ + c₃×85² + c₄×85 + c₅
4바이트 그룹마다 빅엔디언 32비트 수 N으로 읽어 85진수 숫자 c₁~c₅ 다섯 개로 다시 쓴 뒤 문자로 대응시킵니다. Ascii85는 각 숫자에 33을 더하고("!"가 0, "u"가 84), 0 바이트 4개는 "z" 하나로 씁니다. 마지막에 n바이트(n < 4)가 남으면 0으로 채워 인코딩한 뒤 n + 1문자로 자르며, 디코딩할 때는 가장 큰 숫자로 채우고 남는 바이트를 버립니다. Z85에는 불완전한 그룹이 없어서 입력은 4바이트 블록으로 딱 떨어져야 합니다.
예시
텍스트 "Man "은 바이트 4D 61 6E 20이므로 N = 1,298,230,816입니다. 85의 거듭제곱으로 나누면 숫자 24, 73, 80, 78, 61이 나오고, 33을 더하면 문자 9, j, q, o, ^가 됩니다. 따라서 Ascii85는 "Man "을 9jqo^(구분자를 쓰면 <~9jqo^~>)로 인코딩합니다. "Hello, World!"는 13바이트(완전한 그룹 3개와 1바이트)이고 17문자 87cURD_*#4DfTZ)+T로 인코딩됩니다.
자주 묻는 질문
어떤 Base85 변형이 필요한가요?
PDF와 PostScript(ASCII85Decode 필터), 파이썬 a85encode에는 Ascii85를 씁니다. 파이썬 b85encode, Mercurial, Git 바이너리 diff에는 RFC 1924 알파벳을 씁니다. ZeroMQ 키와 소스 코드에 넣는 문자열에는 Z85를 쓰는데, 알파벳에 따옴표나 백슬래시가 없기 때문입니다. 디코딩은 항상 같은 변형으로 하세요.
Base85는 암호화인가요?
아닙니다. 키가 없는 되돌릴 수 있는 인코딩이라 누구나 디코딩할 수 있습니다. 텍스트만 전달하는 경로로 바이너리 데이터를 옮기기 위한 것입니다.
일부 Z85 라이브러리가 내 데이터를 거부하는 이유는 무엇인가요?
ZeroMQ RFC 32는 바이트 수가 4의 배수이고 인코딩된 길이가 5의 배수일 것을 요구합니다. 이 도구는 불완전한 Z85 그룹을 거부합니다. 패딩이 필요하다면 이를 둘러싼 프로토콜이 정의하고 제거해야 합니다.
디코딩 결과가 16진수로만 보이는 이유는 무엇인가요?
압축된 스트림이나 키처럼 올바른 UTF-8이 아닌 바이트는 텍스트로 표시할 수 없으므로 16진수만 의미가 있습니다.
출처
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/base85-encoder/
인용·퍼가기
kakaoCalc. (2026, November 8). Base85 인코더·디코더. https://kakao.mobile/ko/tools/base85-encoder/
“Base85 인코더·디코더.” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/base85-encoder/.