วิธีใช้งาน
- วางสตริง Base64 ลงในช่องอินพุต หรือคลิก “เปิดไฟล์” เพื่อโหลดไฟล์ที่มีข้อความ Base64
- คง “รูปแบบเอาต์พุต” เป็น “ข้อความ” แล้วเลือก “การเข้ารหัสอักขระ” (ค่าเริ่มต้นคือ UTF-8) หรือเปลี่ยนเป็น “เลขฐานสิบหก” สำหรับข้อมูลไบนารี
- หากถอดรหัสไม่สำเร็จ ให้อ่านข้อความแจ้งข้อผิดพลาด ซึ่งจะระบุตำแหน่งของอักขระที่ไม่ถูกต้องตัวแรก
- กด “คัดลอก” หรือ “ดาวน์โหลด” เพื่อรับผลลัพธ์ที่ถอดรหัสแล้ว
อินพุตที่ตัวถอดรหัสรองรับ
การถอดรหัสคือการย้อนกระบวนการเข้ารหัส อักขระแต่ละตัวจะถูกแปลงกลับเป็นค่า 6 บิต และทุกสี่อักขระจะกลายเป็นสามไบต์ Base64 ที่พบในการใช้งานจริงมักไม่ได้อยู่ในรูปที่สะอาดนัก ตัวถอดรหัสนี้จึงออกแบบให้ยืดหยุ่น:
- ช่องว่างและการขึ้นบรรทัดใหม่ จะถูกละเว้น จึงวางเนื้อหา MIME ที่ตัดบรรทัดไว้และบล็อก PEM ได้ทันที แต่ควรลบบรรทัด
-----BEGINและ-----ENDออกก่อน เพราะตัวอักษรและขีดในบรรทัดเหล่านั้นเป็นอักขระ Base64 ที่ถูกต้อง และจะถูกถอดรหัสเป็นข้อมูลไปด้วย - อินพุตแบบปลอดภัยสำหรับ URL ที่ใช้
-และ_ถอดรหัสได้เหมือนกับ Base64 มาตรฐานที่ใช้+และ/ - แพดดิงที่ขาดหาย ไม่เป็นปัญหา เครื่องมือจะปฏิเสธเฉพาะความยาว 4n + 1 อักขระ เพราะอักขระที่เหลือเพียงตัวเดียวไม่สามารถประกอบเป็นไบต์ได้ ซึ่งมักหมายความว่าสตริงถูกตัดขาด
- Data URI ก็ใช้ได้เช่นกัน ส่วนนำหน้า
data:...;base64,จะถูกลบออกก่อนถอดรหัส
เอาต์พุตแบบข้อความหรือไบนารี
ผลลัพธ์ของการถอดรหัสเป็นลำดับไบต์เสมอ หากต้นฉบับเป็นข้อความ ให้ใช้เอาต์พุตแบบข้อความและเลือกชุดอักขระของข้อความนั้น หากต้นฉบับเป็นรูปภาพ PDF ไฟล์บีบอัด คีย์ หรือข้อมูลที่เข้ารหัสลับ ไม่มีชุดอักขระใดทำให้อ่านออกได้ ให้เปลี่ยนเอาต์พุตเป็นเลขฐานสิบหกเพื่อตรวจดูไบต์ หรือเปิด แปลง Base64 เป็นไฟล์ หรือ แปลง Base64 เป็นรูปภาพ เพื่อดูตัวอย่างและบันทึก อักขระช่วงแรกมักบอกได้ว่าเนื้อหาคืออะไร:
| Base64 ขึ้นต้นด้วย | เนื้อหาหลังถอดรหัส |
|---|---|
iVBORw0KGgo | รูปภาพ PNG |
/9j/ | รูปภาพ JPEG |
R0lGOD | รูปภาพ GIF |
JVBERi0 | เอกสาร PDF |
UEsDB | ไฟล์บีบอัด ZIP รวมถึง DOCX, XLSX และ JAR |
H4sI | ข้อมูลที่บีบอัดด้วย gzip |
eyJ | ออบเจ็กต์ JSON เช่น ส่วนหัวของ JWT |
ทำไมข้อความที่ถอดรหัสแล้วจึงอ่านไม่ออก
- ชุดอักขระไม่ถูกต้อง ข้อความ UTF-8 ที่ถูกอ่านเป็น Windows-1252 จะทำให้ é กลายเป็น
éและข้อความ GBK หรือ Shift_JIS ที่ถูกอ่านเป็น UTF-8 จะแสดงอักขระแทนที่ (�) ให้เลือกชุดอักขระที่ใช้เขียนข้อความนั้น - ข้อมูลไบนารี สัญลักษณ์สุ่มที่มีส่วนที่อ่านออกปะปนอยู่บ้าง เช่น
PNGหรือPKใกล้ส่วนต้น แสดงว่าเนื้อหาเป็นไฟล์ ไม่ใช่ข้อความ - ข้อมูลที่บีบอัดหรือเข้ารหัสลับ สตรีม gzip, Protocol Buffers และข้อมูลที่เข้ารหัสลับถอดรหัสได้ถูกต้อง แต่ไม่ใช่ข้อความ เอาต์พุตแบบเลขฐานสิบหกจะแสดงให้เห็นว่าข้อมูลจริงคืออะไร
- การเข้ารหัสซ้ำสองชั้น หากเอาต์พุตยังเป็น Base64 อยู่ ให้วางกลับลงในช่องอินพุตแล้วถอดรหัสอีกครั้ง
การถอดรหัส Base64 ในโค้ด
# Python
base64.b64decode(s).decode('utf-8')
// Node.js (รับอินพุตแบบปลอดภัยสำหรับ URL ได้ด้วย)
Buffer.from(s, 'base64').toString('utf8')
// เบราว์เซอร์: atob() คืนค่าอักขระหนึ่งตัวต่อหนึ่งไบต์ จึงต้องถอดรหัส UTF-8 ต่ออีกขั้น
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))
# เชลล์บน Linux และ macOS
echo 'SGVsbG8=' | base64 --decode
ข้อกำหนด
| ชุดตัวอักษร | A-Z a-z 0-9 + / |
|---|---|
| ขนาดเอาต์พุต | 4 อักขระต่อ 3 ไบต์ (ประมาณ 133%) |
| แพดดิง | เติม = จนความยาวเป็นพหุคูณของ 4 |
| มาตรฐาน | RFC 4648 หัวข้อ 4 |
| แยกตัวพิมพ์เล็ก-ใหญ่ | ใช่ |
ตัวอย่าง
| อินพุต (UTF-8) | เอาต์พุต |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
คำถามที่พบบ่อย
ทำไมจึงเกิดข้อผิดพลาดว่ามีอักขระไม่ถูกต้อง
%2B และ %3D ที่คัดลอกมาจาก URL ให้ลบเครื่องหมายคำพูดออก หรือถอดรหัส URL ของสตริงก่อน ข้อความแจ้งข้อผิดพลาดจะแสดงตำแหน่งของอักขระที่มีปัญหาตัวแรกถอดรหัส Base64 ที่ไม่มีแพดดิงได้หรือไม่
= ต่อท้าย สตริงที่ไม่มีแพดดิงจาก JWT, URL และ API จึงถอดรหัสได้ตามปกติทำไมผลลัพธ์จึงผิดหลังจากคัดลอก Base64 มาจาก URL
+ ทุกตัวเป็นช่องว่าง และเนื่องจากเครื่องมือนี้ละเว้นช่องว่าง อักขระเหล่านั้นจึงหายไป ให้แทนที่ช่องว่างด้วย + ก่อนถอดรหัส และใช้ Base64URL สำหรับค่าที่ส่งผ่าน URLจะถอดรหัส Base64 เป็นรูปภาพหรือไฟล์ได้อย่างไร
Base64 ของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่
ไม่ถูกส่ง การถอดรหัสทำงานในเบราว์เซอร์ของคุณด้วย JavaScript และอินพุตจะไม่ออกจากอุปกรณ์ของคุณ ซึ่งเป็นเรื่องสำคัญเมื่อคุณถอดรหัสโทเค็น ข้อมูลลับในการตั้งค่า หรือข้อมูลส่วนบุคคล