แปลง Base64 เป็นเลขฐานสิบหก (Hex)

วาง Base64 แล้วดูไบต์ชุดเดียวกันในรูปเลขฐานสิบหก เหมาะสำหรับเปรียบเทียบค่าแฮช ตรวจสอบคีย์และลายเซ็น และจับคู่ลายนิ้วมือที่เครื่องมือแต่ละตัวแสดงในรูปแบบต่างกัน

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. วางสตริง Base64 ลงในช่องอินพุต ระบบเลือก Base64 ไว้ในช่อง “จาก” และเลขฐานสิบหกไว้ในช่อง “เป็น” ให้แล้ว
  2. อ่านผลลัพธ์เลขฐานสิบหก ซึ่งใช้เลขฐานสิบหกสองหลักแทนแต่ละไบต์
  3. หากต้องการรูปแบบอื่น ให้เลือกการเข้ารหัสในช่อง “เป็น” เช่น Base58 หรือ Base32 หรือกดปุ่ม “สลับอินพุตและเอาต์พุต” เพื่อแปลงเลขฐานสิบหกกลับเป็น Base64
  4. คัดลอกผลลัพธ์

สองวิธีในการเขียนไบต์ชุดเดียวกัน

ทั้งเลขฐานสิบหกและ Base64 เป็นวิธีเขียนข้อมูลไบนารีในรูปข้อความ เลขฐานสิบหกใช้อักขระสองตัวต่อหนึ่งไบต์ จึงอ่านและเปรียบเทียบค่าของแต่ละไบต์ได้ง่าย ส่วน Base64 บรรจุ 3 ไบต์ลงในอักขระ 4 ตัว และสั้นกว่าประมาณหนึ่งในสาม การแปลงระหว่างสองรูปแบบนี้เปลี่ยนเพียงวิธีเขียน ไม่ได้เปลี่ยนตัวข้อมูล:

ค่าไบต์ความยาวเลขฐานสิบหกความยาว Base64
แฮช MD5163224
แฮช SHA-1204028
แฮช SHA-256 และคีย์สาธารณะ Ed25519326444
แฮช SHA-384489664
แฮช SHA-512 และลายเซ็น Ed255196412888

โปรแกรมแก้ไขเลขฐานสิบหก (hex editor) เครื่องมือวิเคราะห์แพ็กเก็ต และดีบักเกอร์ก็แสดงข้อมูลเป็นเลขฐานสิบหกเช่นกัน การแปลง Base64 เป็นเลขฐานสิบหกจึงช่วยให้คุณเทียบข้อมูลกับสิ่งที่เครื่องมือเหล่านั้นแสดงได้ตรงกัน

เมื่อใดที่ต้องแปลง Base64 เป็นเลขฐานสิบหก

  • เปรียบเทียบค่าแฮช เครื่องมืออย่าง sha256sum แสดงผลเป็นเลขฐานสิบหก ขณะที่แอตทริบิวต์ Subresource Integrity ค่าแฮชใน Content Security Policy และส่วนหัวเช็กซัมอย่าง Content-MD5 ใช้ Base64 ต้องแปลงฝั่งใดฝั่งหนึ่งก่อนจึงจะเปรียบเทียบกันได้
  • ลายนิ้วมือ SSH คำสั่ง ssh-keygen -l แสดงลายนิ้วมือแบบ SHA256: เป็น Base64 ที่ไม่มีแพดดิง ขณะที่ระเบียน DNS แบบ SSHFP เก็บค่าไดเจสต์ SHA-256 เดียวกันเป็นเลขฐานสิบหก ให้วางส่วนที่อยู่หลัง SHA256: เพื่อดูค่าในรูปเลขฐานสิบหก
  • คีย์ IV และลายเซ็น เมื่อดีบักโค้ดด้านการเข้ารหัสลับ (cryptography) การดูไบต์เป็นเลขฐานสิบหกช่วยให้ตรวจสอบความยาว เปรียบเทียบค่า และสังเกตเห็นไบต์ที่ขาดหายหรือเกินมาได้ง่าย

อินพุตที่ตัวแปลงรองรับ

ตัวแปลงจะละเว้นช่องว่างและการขึ้นบรรทัดใหม่ในอินพุต Base64 ยอมรับอักขระแบบปลอดภัยสำหรับ URL อย่าง - และ _ และจะมีแพดดิง = หรือไม่ก็ได้ คุณจึงวางค่าที่คัดลอกมาจาก JSON, JWT หรือเอาต์พุตของเทอร์มินัลได้ทันที การแปลงทำกับไบต์ที่ถอดรหัสแล้ว ผลลัพธ์จึงเป็นเลขฐานสิบหกของตัวข้อมูล ไม่ใช่ของอักขระ Base64 หากต้องการดูรหัสเลขฐานสิบหกของข้อความ ให้ใช้ Base16 แทน

# Shell
printf '%s' "$B64" | base64 --decode | xxd -p

# Python
base64.b64decode(s).hex()

// Node.js
Buffer.from(s, 'base64').toString('hex')

คำถามที่พบบ่อย

เครื่องมือนี้แปลงตัวข้อความ Base64 หรือแปลงไบต์ที่ข้อความนั้นแทนอยู่
แปลงไบต์ เครื่องมือจะถอดรหัส Base64 ก่อน แล้วเขียนแต่ละไบต์ที่ได้เป็นเลขฐานสิบหกสองหลัก หากต้องการรหัสอักขระของสตริง Base64 เอง ให้เข้ารหัสสตริงนั้นในฐานะข้อความด้วยเครื่องมือ Base16
ทำไมเอาต์พุตเลขฐานสิบหกจึงยาวกว่าอินพุต Base64

เลขฐานสิบหกใช้ 2 อักขระต่อไบต์ ขณะที่ Base64 ใช้ประมาณ 1.33 อักขระ ค่าไดเจสต์ SHA-256 ขนาด 32 ไบต์จึงยาว 44 อักขระเมื่อเขียนเป็น Base64 และ 64 อักขระเมื่อเขียนเป็นเลขฐานสิบหก

จะได้เลขฐานสิบหกแบบตัวพิมพ์ใหญ่หรือแบบคั่นด้วยทวิภาคได้อย่างไร
เลขฐานสิบหกไม่แยกตัวพิมพ์เล็ก-ใหญ่ ค่าที่เขียนด้วยตัวพิมพ์เล็กและตัวพิมพ์ใหญ่จึงเท่ากัน หากต้องการรูปแบบเฉพาะ ให้วางเลขฐานสิบหกลงในตัวเข้ารหัส Base16 โดยตั้งอินพุตเป็นเลขฐานสิบหก แล้วเลือก “ตัวพิมพ์ใหญ่” ตัวคั่นแบบ “ช่องว่าง” หรือ “ทวิภาค” หรือตัวนำหน้า 0x
แปลงค่า Base64URL จาก JWT หรือ JSON Web Key ได้หรือไม่

ได้ ตัวแปลงจัดการอักขระแบบปลอดภัยสำหรับ URL และแพดดิงที่ขาดหายไปให้โดยอัตโนมัติ คุณจึงวางพารามิเตอร์ของคีย์และลายเซ็นได้โดยไม่ต้องแก้ไข