Base58 인코더 및 디코더

단계 1 / 333%

입력


            

Base58은 쉽게 헷갈리는 여러 문자를 피하도록 설계된 바이너리-텍스트 인코딩입니다. Bitcoin 알파벳은 0 O I l+ /를 제외하며, 다른 시스템은 같은 58개 기호를 다른 순서로 배열합니다. 기존 Bitcoin Base58Check 주소와 IPFS CIDv0 문자열이 대표적인 예입니다. 이 도구는 브라우저 안에서만 작동하며 UTF-8 텍스트 또는 정확한 16진수 바이트를 Bitcoin, Ripple, Flickr 알파벳으로 변환합니다. 선택한 알파벳에 없는 문자는 거부합니다.

Base58을 인코딩하고 디코딩하는 방법

  1. 1

    바이트 또는 Base58 문자열 입력

    인코딩 방향은 16진수나 일반 텍스트를 받고, 디코딩 방향은 Base58을 받습니다.

  2. 2

    필요하면 알파벳 선택

    기본값은 비트코인의 Base58입니다. 호환성을 위해 Ripple과 Flickr 변형도 사용할 수 있습니다.

  3. 3

    변환 실행

    Base58은 깔끔한 5비트나 6비트 그룹으로 나누지 않습니다. 전체를 하나의 빅엔디언 정수로 보고 58로 반복해서 나눕니다.

  4. 4

    결과 복사

    인코딩된 문자열은 앞쪽의 0 바이트를 앞쪽의 `1` 문자로 보존합니다. 비트코인 알파벳에서 0을 나타내는 글자입니다.

비트코인 Base58 알파벳

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

빠진 글자에 주목하세요: 0, O, I, l. 알파벳의 첫 글자는 1이며 정수 0을 나타냅니다.

실제 동작 방식

비트를 고정된 그룹으로 나누는 Base64와 달리, Base58은 전체 바이트열을 하나의 빅엔디언 정수 N으로 보고 58진수로 표현합니다.

result = []
while N > 0:
    result.prepend(alphabet[N mod 58])
    N = N / 58
for each leading zero byte in input:
    result.prepend(alphabet[0])  # i.e. '1'

그래서 Base58 인코딩은 스트리밍하기가 쉽지 않습니다. 어떤 글자라도 내보내기 전에 전체 숫자가 먼저 필요하기 때문입니다.

Base58과 Base58Check

기존 P2PKH 주소의 일반적인 Base58Check 페이로드는 25바이트입니다. 버전 1바이트, 해시 20바이트, 체크섬 4바이트로 이루어집니다. 체크섬은 버전과 해시를 이중 SHA-256으로 처리한 결과의 앞 4바이트입니다. 이 전체 페이로드를 Base58로 인코딩하면 익숙한 주소 문자열이 됩니다.

이 도구는 일반 Base58만 변환합니다. 주소의 버전과 체크섬을 확인해야 할 때는 전용 Base58Check 검사기를 사용하세요.

알파벳 변형

변형 사용처 비트코인과의 차이
Bitcoin BTC 주소, IPFS CIDv0 기준
Ripple XRP 주소 문자 위치를 서로 바꿈
Flickr 짧은 사진 URL 소문자를 대문자보다 앞에 배치

그냥 Base64를 쓰면 안 되나요?

Base64는 바이너리와 인코딩된 텍스트 사이의 길이 변화가 일정해서(3바이트당 4글자) 효율적입니다. Base58은 오버헤드가 약간 가변적이지만 헷갈리는 글자가 없습니다. 누군가 주소를 손으로 옮겨 적거나 전화로 읽어야 한다면 바로 그 점이 중요합니다.

자주 묻는 질문

항상 그렇지는 않습니다. 사람이 문자열을 다룰 때는 Base58이 더 좋고, 기계가 주고받을 때는 Base64가 더 좋습니다. Base64는 글자당 6비트를 인코딩하고 Base58은 약 5.86비트이므로 Base64가 조금 더 압축적입니다.

Base58은 큰 정수를 인코딩하므로 상위 비트에 따라 길이가 한두 글자 달라질 수 있습니다. 일반적인 P2PKH 주소는 34글자이지만 33글자도 가능합니다.

문자열을 원시 바이트로 디코딩할 수 있습니다. 임의의 바이트를 손실 없이 보려면 16진수 출력을 선택하세요. 버전이나 체크섬은 확인하지 않으므로 디코딩 성공이 유효한 주소를 뜻하지는 않습니다. 주소 검증에는 Base58Check 검사기가 필요합니다.

예. 입력 맨 앞의 각 0 바이트는 출력에서 1 문자가 됩니다. 1로 시작하는 비트코인 주소가 동작하는 방식입니다.

관련 도구