Base58Check 인코더 및 디코더

4바이트 이중 SHA-256 체크섬을 붙여 Base58로 인코딩하거나, Base58Check 문자열을 디코딩해 체크섬을 검증하고 버전 바이트와 페이로드를 확인합니다.

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. Base58Check 문자열을 만들려면 ‘인코딩’을, 문자열을 검증하고 바이트를 복원하려면 ‘디코딩’을 선택합니다.
  2. 인코딩할 때는 ‘입력 형식’을 ‘16진수’로 설정하고 버전 바이트와 페이로드를 차례로 입력합니다. 예를 들어 00 다음에 20바이트 HASH160을 입력합니다.
  3. ‘Base58Check 체크섬’ 옵션은 켠 상태로 둡니다. 인코딩할 때는 체크섬이 덧붙여지고, 디코딩할 때는 체크섬이 검증됩니다.
  4. 디코딩할 때는 문자열을 붙여넣고 ‘출력 형식’을 ‘16진수’로 설정합니다. 체크섬을 제외한 버전 바이트와 페이로드가 표시됩니다.

Base58Check의 작동 방식

  1. 데이터의 종류를 나타내는 버전 바이트로 시작하고, 그 뒤에 20바이트 공개 키 해시 같은 페이로드를 붙입니다.
  2. 이 바이트를 SHA-256으로 해시하고, 그 결과를 다시 SHA-256으로 해시한 다음 앞의 4바이트를 체크섬으로 사용합니다.
  3. 체크섬을 덧붙이고 전체를 Base58로 인코딩합니다. 앞쪽의 0x00 바이트는 각각 1이 됩니다.

이 도구는 입력한 바이트 그대로를 대상으로 체크섬을 계산합니다. 버전 바이트를 자동으로 추가하지 않으므로 입력의 맨 앞에 직접 넣어야 합니다. 디코딩할 때는 마지막 4바이트를 제외한 나머지 전체로 체크섬을 다시 계산합니다. 두 값이 일치하면 버전 바이트와 페이로드가 표시되고, 일치하지 않으면 체크섬 오류가 표시됩니다. 무작위 오타가 검사를 통과할 확률은 약 40억분의 1에 불과합니다.

주요 버전 바이트

버전 바이트데이터인코딩된 문자열의 첫 문자
0x00비트코인 P2PKH 주소(20바이트 HASH160)1
0x05비트코인 P2SH 주소(20바이트 스크립트 해시)3
0x6F비트코인 테스트넷 P2PKH 주소m 또는 n
0x80WIF 개인 키(32바이트, 압축 키는 뒤에 0x01 추가)5, 압축 키는 K / L

bc1로 시작하는 SegWit 및 Taproot 주소는 Base58Check가 아니라 Bech32를 사용하므로 여기서 디코딩할 수 없습니다. XRP Ledger 주소는 같은 체크섬을 Ripple 알파벳과 함께 사용하므로 ‘알파벳’ 옵션에서 ‘Ripple’을 선택하십시오.

예시: HASH160에서 주소로

비트코인 제네시스 블록과 관련된 유명한 주소는 버전 바이트 00 뒤에 20바이트 HASH160이 이어진 형태입니다. ‘입력 형식’을 ‘16진수’로 두고 ‘Base58Check 체크섬’을 켠 채 입력하면 익숙한 주소가 나옵니다.

Input (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Output       1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

코드에서는 Python base58 패키지가 b58encode_check()와 b58decode_check()를 제공하고, npm 패키지 bs58check가 encode()와 decode()를 제공합니다.

사양

알파벳1-9 A-Z a-z(0 O I l 제외)
출력 크기약 137%, 4바이트 체크섬 별도
패딩없음
표준Bitcoin Base58Check
대소문자 구분예

예시

입력 (UTF-8)출력
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

자주 묻는 질문

디코딩할 때 체크섬 오류가 발생하는 이유는 무엇입니까?
문자를 잘못 입력했거나, 다른 알파벳이 선택되어 있거나, 체크섬이 없는 일반 Base58 문자열이기 때문입니다. 솔라나 주소나 IPFS CID 같은 일반 Base58 문자열은 Base58 페이지에서 디코딩하십시오.
도구가 버전 바이트를 자동으로 추가합니까?
아니요. 체크섬은 입력한 바이트를 대상으로 계산되므로 버전 바이트도 입력에 포함해야 합니다. ‘입력 형식’을 ‘16진수’로 바꾸고 버전 바이트를 맨 앞에 입력하십시오. 예를 들어 비트코인 주소라면 00입니다.
WIF 개인 키를 디코딩할 수 있습니까?
예. ‘디코딩’ 탭에 붙여넣고 출력을 ‘16진수’로 선택하십시오. 80, 32바이트 키, 그리고 압축 키라면 끝의 01이 표시됩니다. 디코딩은 브라우저에서 로컬로 실행되지만, 실제 개인 키는 그래도 신중하게 다루십시오.
bc1 주소를 디코딩할 수 있습니까?

아니요. 네이티브 SegWit 및 Taproot 주소는 자체 체크섬을 갖춘 별개의 인코딩인 Bech32 또는 Bech32m을 사용합니다. 비트코인에서 Base58Check는 1 또는 3으로 시작하는 레거시 주소(테스트넷에서는 m, n 또는 2)에만 사용됩니다.