개요
리눅스 coreutils에 포함된 basenc 명령어를 활용하여 텍스트와 이진 데이터를 다양한 인코딩 방식으로 변환하는 방법을 살펴봅니다. 기존 base64 명령어를 넘어 Base32, Base16, Base64URL, Z85까지 터미널에서 직접 실습하며 원리와 활용법을 익힙니다.
1. basenc 기본 개념과 Base64 및 Base32 인코딩
basenc 명령어 실습에 사용할 텍스트 데이터를 준비하기 위해 echo 'Hello Ubuntu Linux!' > sample.txt 명령어를 실행합니다.

basenc 명령어는 Base64, Base32, Z85 등 여러 인코딩 알고리즘을 단일 도구에서 지원하는 다목적 데이터 변환 유틸리티입니다.basenc --base64 sample.txt 명령어를 실행하면 파일의 내용을 표준 Base64 형식으로 인코딩하여 출력합니다.
⚙️ [주요 옵션]
--base64 : 표준 Base64 형식으로 데이터를 처리합니다.--base64url : 파일 이름 및 URL 환경에 적합한 Base64 형식으로 데이터를 처리합니다.--base32 : 표준 Base32 형식으로 데이터를 처리합니다.--base32hex : 확장 16진수 문자셋 기반의 Base32 형식으로 데이터를 처리합니다.--base16 : 16진수(Hex) 형식으로 데이터를 처리합니다.--z85 : ZeroMQ 사양의 Z85 형식으로 데이터를 처리합니다.-d, --decode : 인코딩된 데이터를 원래 형태로 복원(디코딩)합니다.-i, --ignore-garbage : 디코딩 시 알파벳 외의 비정상 문자를 무시합니다.-w, --wrap=COLS : 지정한 문자 수마다 자동으로 줄바꿈을 수행합니다.

basenc --base32 sample.txt 명령어는 파일의 내용을 알파벳 대문자와 숫자(2~7)로 구성된 Base32 형식으로 인코딩합니다.
Base64에 비해 결과 문자열은 길어지지만 대소문자를 구분하지 않는 파일 시스템이나 통신 프로토콜에서 데이터를 안전하게 전송할 때 유용합니다.

2. 웹 친화적인 Base64URL 및 16진수 Base16 변환
웹 URL 환경에서 특수 문자가 포함된 토큰 데이터 인코딩을 실습하기 위해 echo 'api_key=test+token/value==' > web_token.txt 명령어를 실행하여 실습용 텍스트 파일을 생성합니다.

basenc --base64url web_token.txt 명령어는 웹 URL 파라미터나 파일명에 적합한 Base64URL 형식으로 파일 내용을 인코딩합니다.
URL 전송 시 충돌을 유발할 수 있는 표준 Base64의 특수 기호를 대체하여 웹 환경에서 안전하게 전달할 수 있는 문자열로 출력합니다.

basenc --base16 sample.txt 명령어는 텍스트 파일의 바이트 데이터를 16진수(Hex) 형식의 대문자 문자열로 변환합니다.
각 문자에 대응하는 ASCII 16진수 코드로 직관적으로 변환되므로 헥스 덤프 확인이나 바이너리 데이터 분석 시 유용합니다.

3. 비트 단위 Base2 및 특수 인코딩 Z85 실습
4바이트 배수 단위 데이터만 처리하는 Z85 인코딩 실습을 위해 정확히 4바이트 문자열을 담은 텍스트 파일을 생성하는 printf 'Test' > z85_input.txt 명령어를 실행합니다.

basenc --z85 z85_input.txt 명령어는 파일의 데이터를 ZeroMQ 사양의 Z85 형식으로 인코딩하여 출력합니다.
Z85 방식은 4바이트(32비트) 바이너리 데이터를 인쇄 가능한 5개의 ASCII 문자로 압축 변환하므로 인코딩 결과로 raQb)가 나타납니다.

echo -n 'A' | basenc --base2msbf 명령어는 입력받은 문자를 최상위 비트 우선(MSBF, Most Significant Bit First) 기준의 2진수 비트열(Base2)로 변환하여 출력합니다.
ASCII 문자 ‘A’에 대응하는 1바이트(8비트) 2진수 값인 01000001이 그대로 출력되어 비트 단위 데이터 구조를 손쉽게 확인할 수 있습니다.

4. 인코딩 데이터 복원(-d) 및 파이프라인 실무 활용
Base64 디코딩 실습에 사용할 인코딩 데이터를 준비하기 위해 echo 'SGVsZG8gVWJ1bnR1IExpbnV4IQo=' > encoded.b64 명령어를 실행하여 파일로 저장합니다.

basenc -d --base64 encoded.b64 명령어는 -d 옵션을 사용하여 Base64로 인코딩된 파일 내용을 원래의 텍스트로 디코딩하여 출력합니다.
부호화되었던 데이터가 정상적으로 복원되어 터미널에 원본 문자열이 나타납니다.

echo 'Cloud Computing' | basenc --base32 | basenc -d --base32 명령어는 파이프라인(|)을 통해 문자열을 Base32로 인코딩한 후 다시 원본으로 즉시 디코딩합니다.
별도의 임시 파일을 생성하지 않고도 쉘 파이프라인 내에서 인라인 데이터 인코딩과 복원 작업을 연속으로 처리할 수 있습니다.

지금까지 리눅스에서 Base64부터 Z85까지 다양한 인코딩을 손쉽게 처리할 수 있는 basenc 명령어 사용법을 정리해보았습니다.
각 상황에 맞는 최적의 인코딩 방식을 활용해 터미널 환경에서 데이터를 더욱 효율적으로 다루어 보시기 바랍니다.