Công cụ chuyển Base58 sang Hex

Dán một chuỗi Base58 như địa chỉ Bitcoin, khóa công khai Solana hoặc mã băm IPFS để nhận các byte thô của nó ở dạng thập lục phân. Mỗi ký tự 1 ở đầu trở thành một byte 00.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Dán chuỗi Base58 vào ô đầu vào. Dấu cách và ký tự xuống dòng sẽ được bỏ qua.
  2. Đọc các byte đã giải mã ở dạng thập lục phân trong phần đầu ra.
  3. Sao chép chuỗi hex, hoặc nhấn nút Hoán đổi đầu vào và đầu ra để chuyển hex trở lại Base58.

Base58 được chuyển thành hex như thế nào

Base58 đọc toàn bộ chuỗi như một số lớn được viết bằng bảng ký tự Bitcoin gồm 58 ký tự, vốn không có 0, O, I và l. Chuyển sang hex là viết lại cùng số đó ở cơ số 16, hai chữ số hex cho mỗi byte, nên không có gì được thêm vào hay bị mất đi.

Các byte 0 ở đầu dữ liệu không mang giá trị số, nên Base58 ghi mỗi byte như vậy thành một ký tự 1 ở đầu, tức ký tự đầu tiên trong bảng ký tự. Bộ giải mã biến mỗi ký tự 1 ở đầu trở lại thành một byte 00. Ví dụ, 115Q được giải mã thành 0000ff, còn địa chỉ System Program của Solana, gồm ba mươi hai ký tự 1 liên tiếp, được giải mã thành 32 byte 0. Việc chuyển đổi chạy cục bộ trong trình duyệt của bạn.

Ví dụ với Bitcoin, Solana và IPFS

Chuỗi hex dưới đây được thêm dấu cách để tách các phần:

Địa chỉ Bitcoin (P2PKH, khối genesis)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
phiên bản | hash160 (20 byte) | tổng kiểm tra (4 byte)

Khóa công khai Solana (chương trình SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 byte, không có byte phiên bản, không có tổng kiểm tra

IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | độ dài 32 | giá trị băm

Địa chỉ Bitcoin kiểu cũ (legacy) bắt đầu bằng 1 vì byte phiên bản của chúng là 00. Địa chỉ P2SH bắt đầu bằng 3 và được giải mã ra phiên bản 05.

Tổng kiểm tra Base58Check vẫn nằm trong các byte

Địa chỉ Bitcoin và khóa riêng tư WIF dùng Base58Check: bốn byte tổng kiểm tra, lấy từ giá trị SHA-256 kép của dữ liệu, được nối vào trước khi mã hóa. Trang này dùng Base58 thuần, nên tổng kiểm tra được giải mã như mọi dữ liệu khác và xuất hiện ở 8 chữ số hex cuối cùng. Giá trị hash160 của một địa chỉ kiểu cũ là 40 chữ số hex nằm giữa byte 00 ở đầu và phần tổng kiểm tra.

Để xác nhận một địa chỉ còn nguyên vẹn và lấy dữ liệu không kèm tổng kiểm tra, hãy giải mã nó trên trang Base58Check. Khóa Solana và mã băm IPFS không có tổng kiểm tra, nên Base58 thuần là lựa chọn đúng cho chúng.

Chuyển Base58 sang hex trong mã nguồn

# Python (pip install base58)
import base58
base58.b58decode('115Q').hex()      # '0000ff'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
Buffer.from(bs58.decode('115Q')).toString('hex');   // '0000ff'

Câu hỏi thường gặp

Vì sao một địa chỉ Bitcoin được giải mã thành 25 byte thay vì 20?

Một địa chỉ kiểu cũ chứa 1 byte phiên bản, 20 byte hash160 của khóa công khai và 4 byte tổng kiểm tra. Base58 thuần trả về cả ba phần, nên bạn nhận được 50 chữ số hex. Giá trị hash160 là toàn bộ phần nằm giữa byte đầu tiên và bốn byte cuối cùng.

Vì sao mỗi ký tự 1 ở đầu lại trở thành 00?

Trong Base58, ký tự 1 đại diện cho giá trị 0. Các byte 0 ở đầu sẽ biến mất nếu dữ liệu được xem như một số thông thường, nên mỗi byte như vậy được viết thành một ký tự 1 và được giải mã trở lại thành byte 00.

Vì sao tôi gặp lỗi ký tự không hợp lệ?
Bảng ký tự Bitcoin không có 0, O, I hay l, nên chuỗi chứa các ký tự này không phải Base58. Địa chỉ Bitcoin bắt đầu bằng bc1 dùng Bech32, một kiểu mã hóa khác. Địa chỉ Ripple (XRP) dùng bảng ký tự Base58 riêng; hãy giải mã chúng trên trang Base58 với bảng ký tự Ripple được chọn.
Khóa công khai Solana dài bao nhiêu?

Đúng 32 byte, tức 64 chữ số hex. Ở dạng Base58, khóa này thường dài 43 hoặc 44 ký tự. Khóa bắt đầu bằng các byte 0 có thể ngắn hơn, như địa chỉ System Program cho thấy.