파일 업로드
  1. base64hub
  2. 기타 진법
  3. Base58

Base58 인코더 및 디코더

텍스트를 입력하면 비트코인 주소, IPFS, 솔라나가 쓰는 비트코인 알파벳으로 Base58 인코딩한 결과가 나옵니다. Flickr와 Ripple 알파벳도 클릭 한 번이면 되고, 앞쪽 0 바이트는 왕복 변환에서도 살아남습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 알파벳 3종 비트코인, Flickr, Ripple 업데이트 2026. 10. 27.
입력 0바이트 0 B출력 0

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

Base58로 인코딩하는 방법

  1. 입력 · 텍스트에 텍스트를 입력하거나 붙여넣으세요. 입력하는 동안 출력 · Base58에 Base58 문자열이 나타납니다.
  2. 출력 아래에서 알파벳을 고르세요. Bitcoin(기본값, IPFS와 솔라나도 사용), Flickr, Ripple이 있습니다.
  3. 텍스트 대신 원시 바이트를 인코딩하려면 변환 전을 Hex나 Base64로 설정하고 그 형태로 바이트를 붙여넣으세요. 공개 키나 해시는 거의 언제나 텍스트가 아니라 바이트입니다.
  4. 디코딩하려면 방향 전환에서 Base58 → 텍스트를 누르거나, 바이트를 hex로 보여 주는 Base58 디코더를 여세요.

Base58 인코딩의 원리

Base58은 Base64처럼 입력을 고정된 비트 묶음으로 자르지 않습니다. 모든 바이트를 하나의 빅 엔디언 수로 읽어 58진법으로 쓰고, 앞쪽 0 바이트마다 1을 하나씩 붙입니다. 그래서 바이트 하나만 바뀌어도 문자열 전체가 바뀔 수 있고, 길이가 바이트 수뿐 아니라 값에도 좌우됩니다.

데이터를 하나의 수로 다루는 비용은 크기에 따라 빠르게 커지므로, 이 도구는 Base58 입력을 64 KB로 제한합니다. 어떤 키, 해시, 주소에 필요한 것보다도 훨씬 큽니다.

세 가지 Base58 알파벳

세 가지 모두 같은 58개 문자(0, O, I, l을 뺀 숫자와 영문자)를 다른 순서로 씁니다.

알파벳시작Hello0x00 0x00 0x01
Bitcoin123456789ABC…9Ajdvzr112
Flickr123456789abc…9aJCVZR112
Ripplerpshnaf39wBU…9wjdvzirrp

Flickr는 대문자와 소문자를 맞바꾼 것으로, Flickr가 짧은 사진 URL에 썼습니다. Ripple 알파벳은 r로 시작하므로, 버전 바이트가 0인 XRP Ledger 주소는 비트코인 주소가 1로 시작하듯 r로 시작합니다. 잘못된 알파벳으로 디코딩해도 대개 오류 없이 다른 바이트가 나오므로, 값이 맞지 않으면 먼저 알파벳을 확인하세요.

앞쪽 0과 접두사 1

Base58은 데이터를 수로 다루기 때문에 앞쪽의 0 바이트가 사라질 수 있습니다. 이 형식은 0 바이트마다 1을 하나씩 써서 이를 보존합니다.

바이트 (hex)Base58
001
00 0011
00 0112
ff5Q
31 × 00 다음 ff11111111111111111111111111111115Q
32 × 0011111111111111111111111111111111

마지막 행은 실제 주소입니다. 1 32개는 공개 키가 0 바이트 32개인 솔라나 System Program입니다. 직접 짠 Base58 코드가 가장 자주 틀리는 곳이 앞쪽 0이며, 이를 버리는 인코더는 더 적은 바이트로 디코딩되는 문자열을 만듭니다.

Base58이 쓰이는 곳

  • 비트코인 주소와 WIF 키. 레거시 주소(1…, 3…)와 WIF 개인 키(5…, K…, L…)는 Base58Check, 즉 버전 바이트와 체크섬이 붙은 Base58입니다. Bech32 주소(bc1…)는 다른 인코딩입니다.
  • IPFS CIDv0. Qm… 식별자는 34바이트 multihash, 즉 12(SHA-256), 20(32바이트 길이), 다이제스트를 일반 Base58로 쓴 것입니다. 12 20 헤더 때문에 모든 CIDv0이 Qm으로 시작합니다.
  • 솔라나. 주소와 공개 키는 32바이트의 Base58(32–44자)이고, 트랜잭션 서명은 64바이트의 Base58(최대 88자)입니다.

Python에서 Base58

Python 표준 라이브러리에는 Base58이 없습니다. 알고리즘은 직접 쓸 만큼 짧으며, 이 버전은 앞쪽 0도 처리합니다.

ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

def b58encode(data: bytes) -> str:
    n = int.from_bytes(data, "big")
    out = ""
    while n:
        n, r = divmod(n, 58)
        out = ALPHABET[r] + out
    zeros = len(data) - len(data.lstrip(b"\0"))
    return "1" * zeros + out

b58encode(b"Hello")           # '9Ajdvzr'
b58encode(bytes(32))          # '11111111111111111111111111111111'

운영 코드에는 Base58Check도 다루는 PyPI의 base58 같은 관리되는 패키지를 쓰세요. Python의 일반적인 인코딩 패턴은 Python 페이지에 있습니다.

자주 묻는 질문

Base58에서 빠진 문자는 무엇인가요?

Base58은 Base62에서 서로 닮은 네 문자, 0(숫자 0), O(대문자 o), I(대문자 i), l(소문자 L)을 뺀 것입니다. +, /, =도 없으므로 Base58 문자열은 더블클릭 한 번으로 한 단어처럼 선택되고, 이스케이프 없이 URL에 쓸 수 있습니다.

Base58 출력은 왜 1로 시작하나요?

1 하나는 입력의 앞쪽 0 바이트 하나를 나타냅니다. 순수한 수로는 이 0이 사라지므로 Base58은 이를 명시적으로 씁니다. 비트코인 주소가 1로 시작하는 것은 버전 바이트가 0x00이기 때문입니다.

Base58과 Base58Check는 같은 것인가요?

아니요. Base58Check는 4바이트 이중 SHA-256 체크섬을 덧붙인 페이로드에 Base58을 적용한 것입니다. 비트코인 주소와 WIF 개인 키가 이를 쓰고, 솔라나 주소와 IPFS CIDv0은 일반 Base58을 씁니다. 체크섬이 있는 형식에는 Base58Check 도구를 쓰세요.

Base58은 입력보다 얼마나 길어지나요?

무작위 데이터라면 약 37%(log 256 / log 58 ≈ 1.366)로, Base64의 33%보다 조금 큽니다. 정확한 길이는 값에 따라 다릅니다. 무작위 32바이트는 43자나 44자가 되지만, 0 바이트 32개는 1 32개가 됩니다.