Base64 → Hex 변환기

Base64와 16진수 간 변환

Base64

Hex

로컬에서 실행 · 시크릿 붙여넣기 안전
출력이 여기에 표시됩니다…
Base64 → Hex

Base64 to Hex 변환이란?

Base64 to hex 변환은 두 가지 이진-텍스트 인코딩 방식 사이에서 데이터를 변환합니다. Base64는 64개의 ASCII 문자(A-Z, a-z, 0-9, +, /)를 사용하여 3바이트마다 4문자로 인코딩합니다. 16진수(hex)는 16개 기호 알파벳(0-9, a-f)에서 각 바이트를 정확히 두 문자로 표현합니다. 두 형식 간의 변환은 2단계 과정입니다: Base64 문자열을 원시 바이트로 디코딩한 뒤, 해당 바이트를 대상 형식으로 재인코딩합니다.

16진수 표기법은 저수준 프로그래밍, 암호화, 네트워크 프로토콜에서 이진 데이터의 표준 표현 방식입니다. 각 hex 문자는 4비트 니블에 직접 대응하므로 개별 바이트 값을 읽기 쉽습니다. SHA-256 해시는 대부분 64자 hex 문자열로 표시됩니다. 반면 Base64는 압축성에 최적화되어 있어 동일한 해시가 44자에 불과하며, 이메일 첨부 파일(MIME), data URI, API 페이로드의 표준 인코딩으로 사용됩니다.

두 인코딩 방식 모두 RFC 4648에 정의되어 있습니다. 변환 과정은 손실이 없습니다. 데이터가 추가되거나 제거되지 않으며 텍스트 표현만 바뀝니다. 따라서 Base64 to hex 변환은 암호화된 페이로드 디버깅, 인증서 지문 확인, 서로 다른 표시 형식을 사용하는 시스템 간 해시 출력 검증 시 일상적으로 수행되는 작업입니다.

이 Base64 to Hex 변환기를 사용하는 이유

이 도구는 브라우저에서 직접 Base64와 16진수 간 변환을 수행합니다. 데이터가 외부로 전송되지 않으며, 입력하는 즉시 실시간으로 변환됩니다.

즉시 변환
Base64 또는 hex를 붙여넣으면 즉시 결과를 확인할 수 있습니다 — 서버 왕복 없이. 양방향 모드로 한 번의 클릭으로 변환 방향을 전환할 수 있습니다.
🔒
개인 정보 우선 처리
모든 변환은 JavaScript를 사용하여 브라우저 로컬에서 실행됩니다. 암호화 키, 해시, 토큰이 네트워크를 통해 전송되지 않습니다.
양방향 모드
버튼 하나로 Base64-to-hex와 hex-to-Base64 사이를 전환할 수 있습니다. 표준 Base64와 URL-safe Base64 변형을 모두 자동으로 감지하고 처리합니다.
📋
바로 사용 가능한 깔끔한 출력
출력은 구분 기호나 접두사 없이 소문자 hex로 제공됩니다 — 대부분의 API, CLI, 프로그래밍 언어에서 기대하는 형식입니다. 한 번의 클릭으로 복사할 수 있습니다.

Base64 to Hex 활용 사례

프론트엔드 개발자
브라우저 DevTools 콘솔에서 바이너리 프로토콜, WebSocket 프레임, ArrayBuffer 내용을 디버깅할 때 Base64 인코딩된 API 응답을 hex로 변환합니다.
백엔드 엔지니어
JWT 서명 또는 HMAC 응답의 Base64 해시 다이제스트를 hex로 변환하여 hex 표현을 사용하는 OpenSSL 또는 데이터베이스 저장 값과 비교합니다.
DevOps / SRE
PEM 파일의 Base64 공개 키를 브라우저와 모니터링 도구에 표시되는 hex 지문 형식으로 변환하여 TLS 인증서 지문을 검증합니다.
보안 분석가
API 트래픽에서 Base64로 전달되는 암호화 키와 초기화 벡터(IV)를 확인합니다 — Wireshark 또는 CyberChef에서 바이트 수준 분석을 위해 hex로 변환합니다.
데이터 엔지니어
데이터베이스(PostgreSQL bytea, MongoDB BinData)의 Base64 인코딩된 바이너리 열을 비교, 로깅, 마이그레이션 스크립트에 활용할 수 있도록 hex로 변환합니다.
학습자
동일한 바이트가 각 형식에서 어떻게 표현되는지 확인하며 Base64와 16진수의 관계를 이해하고 인코딩 기초를 다집니다.

Base64 vs 16진수 인코딩

Base64와 16진수는 모두 이진 데이터를 인쇄 가능한 텍스트로 변환하지만, 압축성과 가독성 사이에서 서로 다른 트레이드오프를 갖습니다. 아래 표는 주요 차이점을 요약합니다.

속성Base64Hexadecimal
알파벳A-Z a-z 0-9 + / =0-9 a-f
문자당 비트 수64
크기 오버헤드원시 대비 약 33% 증가원시 대비 100% 증가
가독성압축적이지만 불투명각 바이트가 2문자로 표시됨
주요 용도이메일, data URI, API암호화 해시, MAC 주소, 색상
규격RFC 4648IEEE 754, RFC 4648 sec 8

변환 예시

아래 표는 동일한 바이트 시퀀스를 Base64와 16진수 표현으로 보여줍니다. hex 출력은 항상 바이트 수의 정확히 두 배이며, Base64 길이는 ceil(byteCount / 3) * 4임을 확인할 수 있습니다.

입력 (텍스트 / 바이트)Base64Hex
HelloSGVsbG8=48656c6c6f
ABQUI=4142
0xFFMHhGRg==30784646
AAE=0001
key=vala2V5PXZhbA==6b65793d76616c
Þ­¾ï (bytes)3q2+7w==deadbeef

변환 동작 원리

Base64를 16진수로 변환하는 것은 2단계 과정입니다. 먼저 Base64 문자열을 원시 바이트로 디코딩합니다. 각 문자를 6비트 값으로 매핑하고, 비트를 연결한 뒤 8비트 바이트로 분리합니다(패딩 제거). 이 단계는 RFC 4648 섹션 4에 정의된 인코딩을 역방향으로 수행합니다.

두 번째로, 각 바이트를 두 자리 16진수 표현으로 변환합니다. 바이트 값 0-255는 00-ff에 대응합니다. 예를 들어 0x4F(10진수 79) 바이트는 '4'와 'f' 두 문자가 됩니다. 완성된 hex 문자열은 모든 두 문자 쌍을 연결한 것입니다. 역방향(hex to Base64)은 이 단계를 역순으로 적용합니다: hex 쌍을 바이트로 파싱한 뒤 Base64 인코딩합니다.

4비트 이진수Hex 자릿수
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010a
1011b
1100c
1101d
1110e
1111f

코드 예시

아래 실행 가능한 코드 조각은 JavaScript, Python, Go 및 커맨드라인에서 Base64와 hex 간 변환 방법을 보여줍니다. 각 예시는 양방향 변환을 모두 다룹니다.

JavaScript (browser / Node.js)
// Base64 to Hex
function base64ToHex(b64) {
  const raw = atob(b64)
  return Array.from(raw, c =>
    c.charCodeAt(0).toString(16).padStart(2, '0')
  ).join('')
}
base64ToHex('SGVsbG8=') // → "48656c6c6f"

// Hex to Base64
function hexToBase64(hex) {
  const bytes = hex.match(/.{1,2}/g).map(b => parseInt(b, 16))
  return btoa(String.fromCharCode(...bytes))
}
hexToBase64('48656c6c6f') // → "SGVsbG8="

// Node.js Buffer shorthand
Buffer.from('SGVsbG8=', 'base64').toString('hex')   // → "48656c6c6f"
Buffer.from('48656c6c6f', 'hex').toString('base64')  // → "SGVsbG8="
Python
import base64, binascii

# Base64 to Hex
b64_str = 'SGVsbG8='
raw_bytes = base64.b64decode(b64_str)
hex_str = raw_bytes.hex()            # → '48656c6c6f'
# or: binascii.hexlify(raw_bytes).decode()

# Hex to Base64
hex_str = '48656c6c6f'
raw_bytes = bytes.fromhex(hex_str)
b64_str = base64.b64encode(raw_bytes).decode()  # → 'SGVsbG8='

# One-liner for quick conversion
base64.b64encode(bytes.fromhex('deadbeef')).decode()  # → '3q2+7w=='
Go
package main

import (
    "encoding/base64"
    "encoding/hex"
    "fmt"
)

func main() {
    // Base64 to Hex
    raw, _ := base64.StdEncoding.DecodeString("SGVsbG8=")
    hexStr := hex.EncodeToString(raw)
    fmt.Println(hexStr) // → "48656c6c6f"

    // Hex to Base64
    raw2, _ := hex.DecodeString("48656c6c6f")
    b64Str := base64.StdEncoding.EncodeToString(raw2)
    fmt.Println(b64Str) // → "SGVsbG8="
}
CLI (bash)
# Base64 to Hex (using base64 + xxd)
echo -n 'SGVsbG8=' | base64 -d | xxd -p
# → 48656c6c6f

# Hex to Base64
echo -n '48656c6c6f' | xxd -r -p | base64
# → SGVsbG8=

# OpenSSL alternative
echo -n 'SGVsbG8=' | openssl base64 -d | xxd -p
# → 48656c6c6f

자주 묻는 질문

Base64와 16진수의 차이는 무엇인가요?
Base64는 64개의 문자를 사용하며 문자당 6비트를 인코딩하여 원시 바이트 대비 약 33%의 크기 오버헤드가 발생합니다. 16진수는 16개의 문자를 사용하며 문자당 4비트를 인코딩하여 100% 오버헤드, 즉 원본 크기의 정확히 두 배가 됩니다. Base64가 더 압축적이며, hex는 각 바이트가 정확히 두 문자로 표현되어 사람이 읽기 더 쉽습니다.
Base64 to hex 변환은 손실이 발생하나요?
아니요. Base64와 hex 모두 동일한 기반 바이트의 결정론적이고 가역적인 인코딩입니다. 변환 시 데이터가 변경, 압축, 암호화되지 않습니다. 변환 전후 원시 바이트 시퀀스는 동일하며 텍스트 표현만 바뀝니다.
hex 출력이 Base64 입력보다 긴 이유는 무엇인가요?
hex는 항상 바이트당 2문자를 생성하는 반면, Base64는 바이트당 약 1.33문자를 생성합니다. 20바이트 값은 Base64로 28자이지만 hex로는 40자입니다. 이것이 내재된 트레이드오프입니다: hex는 크기가 크지만 각 바이트 경계가 즉시 보입니다.
Base64url(URL-safe Base64)을 hex로 변환할 수 있나요?
네. Base64url은 +를 -로, /를 _로 대체하고 패딩을 생략합니다. 이 도구는 변환 전에 Base64url 입력을 자동으로 정규화합니다. 코드에서는 -를 +로, _를 /로 대체한 뒤 패딩을 추가하면 됩니다: 결과 바이트는 표준 Base64와 동일합니다.
SHA-256 해시를 Base64에서 hex로 변환하려면 어떻게 하나요?
Base64 해시를 이 도구에 붙여넣으면 64자 hex 문자열을 얻을 수 있습니다. 코드에서는: Base64 문자열을 바이트(SHA-256의 경우 32바이트)로 디코딩한 뒤 해당 바이트를 hex 인코딩합니다. Python 예시: base64.b64decode(b64_hash).hex()가 hex 표현을 반환합니다.
Base64 입력에 공백이나 줄바꿈이 포함되면 어떻게 되나요?
이 도구를 포함한 대부분의 Base64 디코더는 디코딩 전에 공백을 제거합니다. PEM 인코딩 인증서와 MIME 인코딩 콘텐츠는 일반적으로 줄당 64자 또는 76자로 Base64를 줄바꿈합니다. 줄바꿈은 인코딩된 데이터의 일부가 아니므로 변환 시 무시해도 안전합니다.
언제 Base64 대신 hex를 사용해야 하나요?
바이트 수준의 가독성이 필요할 때 hex를 사용하세요 — 암호화 출력 확인, 바이너리 프로토콜 디버깅, 색상 값 지정(#ff5733) 등. 압축성이 중요할 때는 Base64를 사용하세요 — JSON에 데이터 삽입, 이메일(MIME) 전송, data URI 구성 등. 저장 및 전송 측면에서 Base64는 hex 대비 약 33% 공간을 절약합니다.