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

Base58을 Base64로: 키와 해시 변환

솔라나 주소나 IPFS Qm… 해시 같은 Base58 값을 붙여넣으면 같은 바이트를 표준 Base64로 받을 수 있습니다. 앞쪽의 1은 모두 0 바이트로 유지되므로 바이트 수가 정확하게 맞습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 정확한 바이트 앞쪽 0 보존 업데이트 2026. 10. 27.
입력 0바이트 0 B출력 0

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

Base58을 Base64로 변환하는 방법

  1. 입력 · Base58에 Base58 문자열을 붙여넣으세요. 줄 바꿈과 공백은 무시됩니다.
  2. 비트코인 알파벳이 아니라면 입력 아래의 알파벳을 Flickr나 Ripple로 바꾸세요.
  3. 출력 · Base64에서 Base64를 읽으세요. 출력 아래에서 패딩 없는 Base64가 필요하면 패딩 (=) 체크를 해제하고, 줄 바꿈을 64열이나 76열로 설정할 수도 있습니다.
  4. 출력 복사를 누르거나, 반대로 하려면 방향 전환의 Base64 → Base58을 쓰세요. Base64를 Base58로 페이지는 그 방향으로 시작합니다.

도구 아래의 카운터는 입력 길이, 디코딩된 바이트 수, 출력 길이를 보여 줍니다. 바이트 수는 키를 빠짐없이 붙여넣었는지 가장 빨리 확인하는 방법입니다. 솔라나 공개 키는 32, 서명이나 키페어는 64, IPFS CIDv0은 34입니다.

예시

Base58Base64바이트
9AjdvzrSGVsbG8=5, 텍스트 Hello
11111111111111111111111111111111AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=0 바이트 32개
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=32, 솔라나 SPL Token 프로그램
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzqEiAmKoa2duWGnt1dGt+P/QHWKcMVS/3q7PyM+g2Q4Igtig==34, IPFS CIDv0
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNaAGLpB7FcvyfVQlOZ6/bw+1DruI8Ywpt9kw==25, 체크섬이 붙은 비트코인 주소

모든 CIDv0은 EiA로 시작하는 Base64로 변환됩니다. 이것이 multihash 헤더 12 20(SHA-256, 32바이트)입니다. 처음 두 바이트를 지우면 SHA-256 도구가 출력하는 형태의 다이제스트만 남습니다.

솔라나 데이터가 두 인코딩으로 다 보이는 이유

솔라나는 지갑과 탐색기에서 공개 키, 프로그램 ID, 트랜잭션 서명을 Base58로 보여 줍니다. 반면 JSON-RPC API는 직렬화된 트랜잭션을 Base64나 Base58로 받으며, Base58은 느리고 지원 중단된 선택지로 표시합니다. 계정 데이터는 그 인코딩을 요청하면 Base64로 돌아옵니다. 그래서 같은 32바이트 키가 한 곳에서는 Base58로, 다른 곳에서는 Base64 안에 나타날 수 있습니다.

변환해도 바이트는 바뀌지 않으므로 두 값을 비교하는 안전한 방법이 됩니다. Base58 키와 Base64 키가 여기서 같은 Base64를 낸다면 같은 키입니다.

Python에서 Base58을 Base64로

표준 라이브러리에는 Base64는 있지만 Base58은 없으므로, 앞부분은 짧은 반복문으로 처리합니다.

import base64

ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

def base58_to_base64(s: str) -> str:
    n = 0
    for ch in s:
        n = n * 58 + ALPHABET.index(ch)
    body = n.to_bytes((n.bit_length() + 7) // 8, "big")
    zeros = len(s) - len(s.lstrip("1"))
    return base64.b64encode(b"\0" * zeros + body).decode()

base58_to_base64("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")
# 'Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk='

ALPHABET.index는 0이나 l처럼 Base58 밖의 문자에서 ValueError를 냅니다. Python의 Base64 처리는 Python 페이지에 더 있습니다.

자주 겪는 문제

  • 바이트 수가 하나 모자랍니다. 이전에 쓴 변환기가 앞쪽 0 바이트를 버린 것입니다. 이 페이지는 그 바이트를 유지하니 출력을 비교해 보세요.
  • 0, O, I, l에서 오류가 납니다. 이 문자들은 Base58이 아닙니다. 복사나 OCR 실수가 있는지 확인하세요.
  • 입력이 bc1, 0x, bafy로 시작합니다. 각각 Bech32, hex, Base32(IPFS CIDv1)이며 Base58이 아닙니다. CIDv1을 읽는 방법은 Base32 디코더에서 설명합니다.
  • 출력이 예상보다 4바이트 깁니다. 문자열이 Base58Check였고 체크섬이 아직 붙어 있습니다.

자주 묻는 질문

솔라나 공개 키를 Base64로 바꾸려면 어떻게 하나요?

주소를 입력에 붙여넣으세요. 올바른 솔라나 공개 키는 정확히 32바이트로 디코딩되므로 Base64 출력은 항상 = 하나로 끝나는 44자이고, 패딩이 없으면 43자입니다.

Base64는 왜 A로 시작하나요?

Base58 입력이 1로 시작했기 때문이며, 이는 0 바이트로 디코딩됩니다. Base64는 첫 6비트로 첫 문자를 정하는데, 0인 비트 여섯 개는 A입니다. 그래서 비트코인 주소 1A1zP1…이 AGLp…가 됩니다.

URL-safe Base64로 받으려면 어떻게 하나요?

결과를 Base64를 Base64URL로에 복사하세요. +와 /를 -와 _로 바꾸고 패딩을 지워 줍니다. =만 없애면 된다면 여기서 패딩 (=) 체크를 해제하세요.

Base58Check 문자열은 출력이 다른가요?

변환은 같지만, 그러면 Base64에 버전 바이트와 4바이트 체크섬이 포함됩니다. 페이로드만 원한다면 먼저 Base58Check 도구로 디코딩하세요.