Ngôn ngữ: Tiếng Việt

tools / base58

base58/

Chuyển văn bản hoặc hex sang Base58 và ngược lại, dùng bảng chữ cái Bitcoin. Mỗi byte 00 ở đầu thành một chữ 1 ở đầu.

Văn bản gốc

Base58

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

Vì sao Base58 không có 0 O I l, giải mã báo "không nằm trong bảng chữ cái Base58" thì phải làm sao

Base58 cố ý bỏ chữ số 0, chữ O hoa, chữ I hoa và chữ l thường, vì những ký tự này viết tay hoặc nhìn bằng mắt rất dễ nhầm. 58 ký tự còn lại là: 1 đến 9, A đến Z hoa (không có I và O), a đến z thường (không có l). Khi giải mã gặp ký tự ngoài bảng chữ cái, công cụ sẽ chỉ ra đó là ký tự thứ mấy và là ký tự gì. Hãy kiểm tra xem khi sao chép có lẫn dấu nháy, dấu câu hoặc ký tự vô hình không; dấu cách và xuống dòng được tự động bỏ qua. Nếu chuỗi này vốn có 0, O, I, l thì nhiều khả năng nó không phải Base58 mà là Base64, hex hoặc một kiểu mã hóa khác.

Giải mã Base58 báo "không phải văn bản UTF-8 hợp lệ" thì phải làm sao

Nghĩa là các byte giải mã được không phải văn bản UTF-8; khóa riêng, hash khóa công khai, địa chỉ vốn là dữ liệu nhị phân. Hãy đổi "Định dạng đầu ra" sang hex để xem các byte gốc. Văn bản luôn được xử lý theo UTF-8, các byte viết bằng GBK hay bảng mã khác không đọc thành văn bản được ở đây, cần dùng công cụ hỗ trợ bảng mã đó để chuyển đổi.

Chữ 1 ở đầu kết quả Base58 có nghĩa gì, vì sao 00 ở đầu hex lại thành 1

Base58 coi cả chuỗi byte là một số nguyên lớn rồi đổi cơ số; byte 00 ở đầu không đóng góp gì vào giá trị nên sẽ bị mất, vì vậy quy ước mỗi byte 00 ở đầu được viết thành một chữ 1 ở đầu (ký tự đầu tiên của bảng chữ cái). Ví dụ hex 0000010203 cho kết quả 11Ldp, hai chữ 1 ở đầu ứng với hai byte 00. Khi giải mã, có bao nhiêu chữ 1 ở đầu thì khôi phục lại bấy nhiêu byte 00; đầu vào toàn byte 00 thì chỉ còn lại một dãy chữ 1.

Có giải mã được địa chỉ Bitcoin không, còn checksum của Base58Check thì sao

Giải mã ra byte được, nhưng không kiểm tra gì cả. Địa chỉ Bitcoin dùng Base58Check: byte phiên bản, dữ liệu và checksum 4 byte nối liền rồi mới qua Base58. Công cụ này chỉ làm Base58 thông thường, giải mã sẽ cho ra đầy đủ các byte gốc, không kiểm tra cũng không cắt bỏ checksum, và khi mã hóa cũng không tự thêm vào. Ví dụ 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa giải mã (đầu ra chọn hex) được 25 byte: 1 byte phiên bản 00, 20 byte hash, 4 byte cuối là checksum.

Base58 khác Base64 thế nào

Base64 dùng 64 ký tự (gồm + và /, cuối có thể có =), chuyển đổi từng nhóm 3 byte, nhanh và độ dài kết quả dự đoán được. Base58 bỏ các ký tự dễ nhìn nhầm cùng với + / =, nhờ vậy nhấp đúp là chọn được cả chuỗi, chép tay ít sai hơn; cái giá là phải chia cả chuỗi dữ liệu như một số nguyên lớn, càng dài càng chậm, nên thường dùng cho dữ liệu ngắn vài chục byte như địa chỉ và khóa. Kết quả của hai loại không thay thế được cho nhau.

Vì sao kết quả mã hóa khác với website hoặc thư viện khác

Hãy kiểm tra ba điểm. Bảng chữ cái: công cụ này dùng bảng chữ cái Bitcoin, bảng của Flickr xếp chữ thường lên trước, thứ tự của Ripple lại khác nữa, nên kết quả đương nhiên khác. Nội dung nhập: văn bản được mã hóa nguyên văn theo UTF-8, thừa một xuống dòng hoặc dấu cách ở cuối là kết quả đã khác. Định dạng đầu vào: nếu cần mã hóa các byte hex thì phải chọn hex, nếu không 0a1b sẽ bị coi là văn bản bốn ký tự. Đầu vào hex có thể dùng dấu cách, dấu hai chấm, dấu phẩy làm dấu phân cách hoặc tiền tố 0x, số chữ số phải là số chẵn.

Đầu vào Base58 có giới hạn độ dài không

Có. Mã hóa tối đa 32768 byte, giải mã tối đa 45000 ký tự, vượt quá sẽ yêu cầu chia nhỏ để xử lý. Khối lượng tính toán của Base58 tăng theo bình phương độ dài, đặt giới hạn là để trang không bị treo; từ vài KB trở xuống gần như có kết quả ngay.

Nội dung tôi nhập có bị tải lên không

Không. Mã hóa và giải mã đều diễn ra trong trình duyệt, không gửi lên máy chủ.