ตัวเข้ารหัสและถอดรหัส 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 ทำงาน
เครื่องมือที่เกี่ยวข้อง
ตัวเข้ารหัสไฟล์ Base64
เข้ารหัสไฟล์ใดก็ได้ (PDF, ZIP, รูปภาพ, ไฟล์ปฏิบัติการ) เป็นข้อความ Base64 เพื่อฝังใน JSON, อีเมล, YAML หรือ data URI ทำงานในเครื่องของคุณ ไม่มีการอัปโหลด
ตัวระบุการเข้ารหัส
วางไซเฟอร์เท็กซ์หรือแฮช แล้วตัวระบุจะแนะนำอัลกอริทึมหรือการเข้ารหัสที่น่าจะเป็น: MD5, SHA, bcrypt, AES, RSA, Base64 และอื่น ๆ
เครื่องแปลง ETH เป็น USD
แปลงอีเธอเรียม (ETH) เป็นดอลลาร์สหรัฐด้วยอัตรา ETH/USD แบบเรียลไทม์หรืออัตราที่คุณกำหนดเอง ดูว่าจำนวน ETH เท่าใดก็ได้มีมูลค่าเป็น USD เท่าไร
ตัวสร้าง HMAC
สร้างลายเซ็น HMAC (SHA-256, SHA-384, SHA-512, SHA-1 และ MD5) จากข้อความและกุญแจลับ เพื่อใช้ในการยืนยันตัวตนผ่าน API และ Webhook
ตัวตรวจสอบ checksum
คำนวณ checksum แบบ MD5, SHA-1, SHA-256, SHA-384, SHA-512 หรือ CRC32 ของข้อความใดก็ได้ แล้วเปรียบเทียบกับค่าที่คาดไว้เพื่อดูผลชัดเจนว่าตรงกันหรือไม่
เครื่องแปลง Gwei เป็น Ether
แปลงจำนวนในหน่วย Gwei เป็น Ether (ETH) ด้วยทศนิยมสูงสุด 18 ตำแหน่ง มีประโยชน์สำหรับการประมาณค่าธรรมเนียม Gas และการอ่านข้อมูลธุรกรรม
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Koder i dekoder Base58 [PL]
- Bộ mã hóa và giải mã Base58 [VI]
- Codificador e Decodificador Base58 [PT]
- Base58エンコーダー・デコーダー [JA]
- مشفر ومفكك Base58 [AR]
- Base58 encoder en decoder [NL]
- Base58 인코더 및 디코더 [KO]
- Codificador y Decodificador Base58 [ES]
- Base58-kodare och avkodare [SV]
- Encoder dan Decoder Base58 [ID]
- Encodeur et décodeur Base58 [FR]
- Base58-Encoder/Decoder [DE]
- Codificatore e Decodificatore Base58 [IT]
- Base58 Encoder and Decoder [EN]
- Кодировщик и декодировщик Base58 [RU]
- Base58 Kodlayıcı ve Çözücü [TR]
- Base58 编码器和解码器 [ZH]