ตัวเข้ารหัสและถอดรหัส Base58
ข้อมูลนำเข้า
Base58 คือการเข้ารหัสข้อมูลไบนารีเป็นข้อความที่ออกแบบมาเพื่อหลีกเลี่ยงอักขระหลายตัวที่สับสนกันได้ง่าย ชุดอักขระ Bitcoin ไม่ใช้ 0 O I l และ + / ส่วนระบบอื่นจัดเรียงสัญลักษณ์ 58 ตัวเดียวกันในลำดับที่ต่างกัน ตัวอย่างที่คุ้นเคยคือที่อยู่ Bitcoin แบบเก่าที่ใช้ Base58Check และสตริง IPFS CIDv0 เครื่องมือนี้ทำงานในเบราว์เซอร์เท่านั้น แปลงข้อความ UTF-8 หรือไบต์เลขฐานสิบหกอย่างแม่นยำด้วยชุดอักขระ Bitcoin, Ripple หรือ Flickr และปฏิเสธอักขระที่ไม่อยู่ในชุดที่เลือก
วิธีเข้ารหัสและถอดรหัส Base58
-
1
ใส่ไบต์หรือสตริง Base58
ทิศทางเข้ารหัสรับเลขฐานสิบหกหรือข้อความดิบ ส่วนทิศทางถอดรหัสรับ Base58
-
2
เลือกชุดอักขระหากจำเป็น
ค่าเริ่มต้นคือ Base58 ของ Bitcoin และมีแบบ Ripple กับ Flickr ให้เลือกเพื่อความเข้ากันได้
-
3
เรียกใช้การแปลง
Base58 ไม่ได้แบ่งเป็นกลุ่ม 5 หรือ 6 บิตอย่างเป็นระเบียบ แต่ถูกมองเป็นจำนวนเต็มแบบบิ๊กเอนเดียนตัวเดียว แล้วหารด้วย 58 ซ้ำ ๆ
-
4
คัดลอกผลลัพธ์
สตริงที่เข้ารหัสจะคงไบต์ศูนย์ที่นำหน้าไว้เป็นอักขระ `1` ที่นำหน้า (อักขระแทนศูนย์ในชุดอักขระ Bitcoin)
ชุดอักขระ Base58 ของ Bitcoin
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
เพย์โหลด Base58Check ทั่วไปของที่อยู่ P2PKH แบบเก่ามี 25 ไบต์ ได้แก่ ไบต์เวอร์ชัน 1 ไบต์ ไบต์แฮช 20 ไบต์ และไบต์เช็คซัม 4 ไบต์ เช็คซัมคือ 4 ไบต์แรกของค่า SHA-256 สองรอบจากเวอร์ชันและแฮช เมื่อนำเพย์โหลดทั้งหมดไปเข้ารหัส Base58 จะได้สตริงที่อยู่ที่คุ้นเคย
เครื่องมือนี้แปลงเฉพาะ Base58 แบบธรรมดา หากต้องการตรวจสอบเวอร์ชันและเช็คซัมของที่อยู่ ให้ใช้ตัวตรวจสอบ Base58Check โดยเฉพาะ
ชุดอักขระแบบต่าง ๆ
| แบบ | ใช้ที่ไหน | ต่างจาก Bitcoin อย่างไร |
|---|---|---|
| Bitcoin | ที่อยู่ BTC, IPFS CIDv0 | เกณฑ์อ้างอิง |
| Ripple | ที่อยู่ XRP | สลับตำแหน่งอักขระ |
| Flickr | URL รูปภาพแบบสั้น | วางตัวพิมพ์เล็กก่อนตัวพิมพ์ใหญ่ |
ทำไมไม่ใช้ Base64 เฉย ๆ?
Base64 มีการเปลี่ยนแปลงความยาวระหว่างไบนารีกับข้อความที่เข้ารหัสอย่างคงที่ (4 อักขระต่อ 3 ไบต์) ซึ่งมีประสิทธิภาพ ส่วน Base58 มีค่าใช้จ่ายเพิ่มที่แปรผันเล็กน้อย แต่ไม่มีอักขระที่กำกวม ซึ่งเป็นสิ่งที่คุณต้องการเมื่อมีคนต้องคัดลอกที่อยู่ด้วยมือหรืออ่านผ่านโทรศัพท์
คำถามที่พบบ่อย
ไม่ใช่เสมอไป Base58 ดีกว่าเมื่อมนุษย์เป็นผู้จัดการสตริง ส่วน Base64 ดีกว่าเมื่อเครื่องส่งข้อมูลไปมา Base64 เข้ารหัส 6 บิตต่ออักขระ เทียบกับ Base58 ที่ราว 5.86 บิต ดังนั้น Base64 จึงกระชับกว่าเล็กน้อย
Base58 เข้ารหัสจำนวนเต็มขนาดใหญ่ ความยาวจึงต่างกันได้หนึ่งหรือสองอักขระตามบิตลำดับสูง ที่อยู่ P2PKH ทั่วไปยาว 34 อักขระ แต่ 33 อักขระก็เป็นไปได้
เครื่องมือถอดรหัสสตริงเป็นไบต์ดิบได้ ให้เลือกผลลัพธ์แบบเลขฐานสิบหกเพื่อแสดงไบต์ทุกค่าโดยไม่สูญหาย เครื่องมือไม่ตรวจสอบเวอร์ชันหรือเช็คซัม ดังนั้นการถอดรหัสสำเร็จไม่ได้ยืนยันว่าที่อยู่ถูกต้อง ต้องใช้ตัวตรวจสอบ Base58Check สำหรับงานนั้น
ถูกต้อง ไบต์ศูนย์แต่ละตัวที่ต้นข้อมูลนำเข้าจะกลายเป็นอักขระ 1 ในผลลัพธ์ ซึ่งเป็นวิธีที่ที่อยู่ Bitcoin ที่ขึ้นต้นด้วย 1 ทำงาน
เครื่องมือที่เกี่ยวข้อง
รหัสแปลงตัวเลขเป็นตัวอักษร
แปลงตัวเลขเป็นตัวอักษรและย้อนกลับด้วยรหัส A=1, B=2 (A1Z26) สำหรับปริศนา คำทาย และเบาะแสในห้องเอสเคปรูม
เครื่องมือเข้ารหัส Vigenère
เข้ารหัสและถอดรหัสข้อความด้วยรหัส Vigenère แบบคลาสสิกโดยใช้คำสำคัญ เลื่อนตัวอักษรละติน A-Z พร้อมคงตัวพิมพ์ใหญ่-เล็ก ช่องว่าง และเครื่องหมายวรรคตอน
ตัวสร้าง TOTP
สร้างรหัสผ่านแบบใช้ครั้งเดียวตามเวลา (RFC 6238) จากคีย์ลับ Base32 รองรับ SHA-1, SHA-256, SHA-512 จำนวน 6 ถึง 8 หลัก และช่วงเวลา 30 หรือ 60 วินาที
ตัวสร้างแฮช (Hash Generator)
สร้างค่าแฮช MD5, SHA-1, SHA-256, SHA-384, SHA-512 และ CRC32 จากข้อความ พร้อมค่าไดเจสต์พร้อมคัดลอกสำหรับเช็คซัมและการเปรียบเทียบ
เครื่องมือเข้ารหัสข้อความ
เข้ารหัสและถอดรหัสข้อความโดยใช้ AES พร้อมรหัสผ่าน เพื่อให้มีเพียงผู้รับเท่านั้นที่สามารถอ่านข้อความได้
เครื่องแปลง Wei เป็น Ether
แปลง Wei เป็น Ether (ETH) ด้วยการคำนวณที่แม่นยำ ไม่มีการปัดเศษแบบจุดลอยตัว 1 ETH = 10^18 Wei
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Codificador y Decodificador Base58 [ES]
- Encodeur et décodeur Base58 [FR]
- Base58エンコーダー・デコーダー [JA]
- Codificador e Decodificador Base58 [PT]
- Bộ mã hóa và giải mã Base58 [VI]
- مشفر ومفكك Base58 [AR]
- Encoder dan Decoder Base58 [ID]
- Base58-kodare och avkodare [SV]
- Base58 인코더 및 디코더 [KO]
- Base58-Encoder/Decoder [DE]
- Base58 encoder en decoder [NL]
- Koder i dekoder Base58 [PL]
- Base58 Encoder and Decoder [EN]
- Codificatore e Decodificatore Base58 [IT]
- Кодировщик и декодировщик Base58 [RU]
- Base58 Kodlayıcı ve Çözücü [TR]
- Base58 编码器和解码器 [ZH]