ถอดรหัส Base64
เครื่องมือถอดรหัส Base64 ออนไลน์ฟรีที่คืนสตริง Base64 กลับเป็นข้อความต้นฉบับ รองรับหลายชุดอักขระ และเหมาะสำหรับตรวจสอบ API กับกู้คืน log
คำแนะนำที่เกี่ยวข้อง
การถอดรหัส Base64 คืออะไร?
การถอดรหัส Base64 คือกระบวนการย้อนกลับจากการเข้ารหัส Base64 โดยแปลงสตริง Base64 (เช่น SGVsbG8=) ให้กลับเป็นข้อความต้นฉบับหรือข้อมูลไบนารี Base64 เป็นวิธีการเข้ารหัสที่ใช้ตัวอักษร ASCII ที่พิมพ์ได้ 64 ตัว (A-Z, a-z, 0-9, +, /) เพื่อแทนข้อมูลไบนารี และนิยามไว้ใน RFC 4648
**การใช้งานที่พบบ่อยของการถอดรหัส:** Base64 ถูกใช้มากใน header ของ HTTP Basic Authentication, payload ของ JWT token, field ในผลลัพธ์ API, Data URI (เช่น `data:image/png;base64,...`), การเข้ารหัส MIME สำหรับไฟล์แนบอีเมล และการเก็บข้อมูล BLOB ในฐานข้อมูล การถอดรหัสสิ่งเหล่านี้เป็นงานที่พบบ่อยในการพัฒนาและดีบัก
**ขั้นตอนสำคัญในการถอดรหัส:** เมื่อถอดรหัส Base64 ต้องจัดการให้ถูกต้องกับ 1) ชุดอักขระ (UTF-8 สำหรับตัวอักษรหลายไบต์, ASCII สำหรับข้อความอังกฤษล้วน) 2) Padding (`=`) เพราะความยาวต้องเป็นพหุคูณของ 4 3) ตัวแปร URL-safe (`-` และ `_` แทน `+` และ `/`) 4) การขึ้นบรรทัดใหม่และช่องว่าง (Base64 มาตรฐานไม่มี ส่วน MIME จะขึ้นบรรทัดใหม่ทุก 76 อักขระ)
**การรองรับในเบราว์เซอร์:** เบราว์เซอร์มีฟังก์ชัน `atob()` สำหรับถอดรหัส Base64 แต่รองรับเฉพาะ Latin-1 (ISO-8859-1) เท่านั้น หากต้องการประมวลผลข้อความ UTF-8 ต้องใช้ `TextDecoder('utf-8')` ช่วยแปลงไบต์ก่อน เครื่องมือนี้จัดการรายละเอียดนั้นให้อัตโนมัติ
**ความเป็นส่วนตัวจากการประมวลผลในเครื่อง:** การถอดรหัสทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ สตริง Base64 ที่คุณป้อนจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ใด จึงสามารถใช้ถอดรหัส token ที่ละเอียดอ่อนใน API หรือข้อมูลผู้ใช้ใน log ได้อย่างมั่นใจ
กรณีการใช้งาน
- ถอดรหัส field Base64 ที่ได้จาก API เพื่อดูเนื้อหาต้นฉบับ
- กู้คืนข้อมูล Base64 ใน log
- เรียกคืนค่า Base64 ในไฟล์คอนฟิก
- วิเคราะห์สาเหตุของ error ตอนถอด Base64 เช่น padding หายหรือมีอักขระไม่ถูกต้อง
- ถอดรหัส header และ payload ของ JWT เพื่อดูข้อมูลผู้ใช้
- ถอดรหัสข้อมูลรับรอง HTTP Basic Authentication เพื่อดูชื่อผู้ใช้และรหัสผ่าน
- กู้คืนข้อมูลรูปภาพหรือ resource จาก Data URI Scheme
วิธีการใช้งาน
- วางสตริง Base64 ที่ต้องการถอดรหัส
- เลือกชุดอักขระ (UTF-8/ASCII/ISO-8859-1)
- เครื่องมือจะถอดรหัส Base64 และแสดงผลให้อัตโนมัติ
- คัดลอกผลลัพธ์ไปใช้ต่อในการดีบักหรือบันทึกเอกสาร
คุณสมบัติ
- แปลงแบบเรียลไทม์: ป้อนข้อมูลแล้วระบบถอดรหัสอัตโนมัติด้วย debounce 300 ms โดยไม่ต้องกดเอง
- รองรับหลายชุดอักขระ: UTF-8, ASCII และ ISO-8859-1 สำหรับภาษาไทย อังกฤษ และหลายภาษา
- รองรับ URL-safe Base64: จัดการการแทนที่ `-` และ `_` อัตโนมัติ รวมถึงรูปแบบที่ไม่มี padding
- ตรวจจับอักขระไม่ถูกต้อง: หากถอดรหัสล้มเหลว จะแสดงตำแหน่งปัญหาเพื่อหาสาเหตุได้เร็ว
- คัดลอกและดาวน์โหลดได้ในคลิกเดียว: คัดลอกผลลัพธ์ลง clipboard หรือดาวน์โหลดเป็นไฟล์ `.txt`
- จัดการ Padding อัตโนมัติ: เติมหรือลบ `=` ให้เองโดยไม่ต้องปรับความยาวด้วยมือ
- รองรับตัวแปร MIME: รู้จักและประมวลผล Base64 MIME ที่มีการขึ้นบรรทัดใหม่ทุก 76 อักขระ
ตัวอย่างโค้ด
JavaScript: ถอดด้วย `atob()` ในเบราว์เซอร์ (รองรับเฉพาะ Latin-1)
javascriptใช้ API พื้นฐานของเบราว์เซอร์เพื่อถอด Base64 แบบข้อความอังกฤษทั่วไป หากเป็น UTF-8 ให้ใช้ `TextDecoder`
// Standard Base64 decode (plain English / Latin-1)
function b64Decode(str) {
try {
return atob(str);
} catch (e) {
return 'Decode failed: ' + e.message;
}
}
console.log(b64Decode('SGVsbG8gV29ybGQ=')); // "Hello World"
// UTF-8 decode (recommended)
function b64DecodeUtf8(str) {
const binary = atob(str);
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) {
bytes[i] = binary.charCodeAt(i);
}
return new TextDecoder('utf-8').decode(bytes);
}
console.log(b64DecodeUtf8('5LiW55WM')); // UTF-8 textPython: ถอดด้วยไลบรารี `base64` (รวม URL-Safe)
pythonไลบรารีมาตรฐาน `base64` ของ Python รองรับทั้งโหมด Standard และ URL-Safe
import base64
# Standard decode
encoded = 'SGVsbG8g5LiW55WM'
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)
# URL-Safe decode
url_encoded = 'SGVsbG8g5LiW55WM'
decoded = base64.urlsafe_b64decode(url_encoded + '=' * (4 - len(url_encoded) % 4))
print(decoded.decode('utf-8'))
# MIME decode (after removing line breaks)
mime_encoded = 'SGVs\nbG8g\nV29y\nbGQ='
decoded = base64.b64decode(mime_encoded.replace('\n', '')).decode('utf-8')
print(decoded)
# Ignore invalid characters automatically
import re
cleaned = re.sub(r'[^A-Za-z0-9+/=]', '', encoded)
decoded = base64.b64decode(cleaned).decode('utf-8')
print(decoded)Java: ถอดด้วย `java.util.Base64` (หลายตัวแปร)
javaไลบรารีมาตรฐานของ Java รองรับ Base64 แบบ RFC 4648, URL-Safe และ MIME อย่างครบถ้วน
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64DecodeExample {
public static void main(String[] args) {
String encoded = "SGVsbG8g5LiW55WM";
// Standard decode
byte[] decoded = Base64.getDecoder().decode(encoded);
System.out.println(new String(decoded, StandardCharsets.UTF_8));
// URL-Safe decode
byte[] urlDecoded = Base64.getUrlDecoder().decode(encoded);
System.out.println(new String(urlDecoded, StandardCharsets.UTF_8));
// MIME decode (handles line breaks automatically)
String mime = "SGVs\nbG8g\nV29y\nbGQ=";
byte[] mimeDecoded = Base64.getMimeDecoder().decode(mime);
System.out.println(new String(mimeDecoded, StandardCharsets.UTF_8));
// Error handling
try {
Base64.getDecoder().decode("invalid@base64");
} catch (IllegalArgumentException e) {
System.err.println("Decode failed: " + e.getMessage());
}
}
}คำถามที่พบบ่อย
ทำไมถึงขึ้น InvalidCharacterError ตอนถอด Base64?
สาเหตุที่พบบ่อยคือมีช่องว่าง บรรทัดใหม่ หรือเครื่องหมายคำพูดปะปนอยู่ จำนวน Padding (`=`) ไม่ถูกต้อง หรือใช้ตัวแปร URL-safe (`-/_`) แต่ถอดแบบ Base64 ปกติ ควรล้างสตริงให้สะอาดก่อน
ถ้าถอดแล้วได้ข้อความเพี้ยนควรทำอย่างไร?
เป็นไปได้ว่าคุณเลือกชุดอักขระผิด หากข้อความต้นฉบับเป็นข้อความหลายไบต์ ควรเลือก UTF-8 ส่วนข้อความอังกฤษล้วนหรือข้อมูลไบนารีอาจลอง ASCII หรือ ISO-8859-1 ได้
การถอด URL-safe Base64 ต่างจาก Base64 ปกติอย่างไร?
URL-safe Base64 ใช้ `-` และ `_` แทน `+` และ `/` และมักละ Padding `=` ท้ายสตริง ก่อนถอดรหัสจึงต้องแปลง `-/_` กลับเป็น `+/` และเติม padding ให้ครบ
การถอด Base64 เหมาะกับการดีบัก API ไหม?
เหมาะมาก เพราะผลลัพธ์ API, OAuth token, callback parameter และ middleware log จำนวนมากจะห่อข้อมูลไว้ด้วย Base64 เมื่อถอดแล้วจะเห็นข้อมูลจริงได้ทันที
จะถอด header หรือ payload ของ JWT อย่างไร?
JWT ใช้ Base64URL (ตัวแปร URL-safe) ให้วาง segment แรก (header) หรือ segment ที่สอง (payload) แล้วเลือกโหมด URL-safe ส่วน segment ที่สามเป็นลายเซ็น ไม่ควรนำมาตรวจสอบด้วยการถอดรหัสแบบธรรมดา
รองรับไฟล์ขนาดใหญ่ไหม?
ไม่มีการจำกัดขนาดแบบชัดเจน แต่เบราว์เซอร์อาจช้าลงเมื่อข้อความมีขนาดใหญ่มาก การถอดสตริง Base64 ที่เกิน 10MB อาจทำให้หน้าอืด จึงควรถอดเป็นช่วง ๆ หรือใช้สคริปต์ Node.js / Python
ถ้า padding หายไปจะเป็นอย่างไร?
เครื่องมือจะเติม Padding (`=`) ให้อัตโนมัติเพื่อให้ความยาวเป็นพหุคูณของ 4 เนื่องจากตัวแปร URL-safe มักไม่ใส่ padding เครื่องมือจึงตรวจจับและเติมให้เอง
การถอด Base64 คือการถอดรหัสลับหรือไม่?
ไม่ใช่ Base64 เป็นการเข้ารหัสแบบย้อนกลับได้ ไม่ใช่การเข้ารหัสลับ ใคร ๆ ก็ถอด Base64 ได้ หากเป็นข้อมูลสำคัญควรใช้การเข้ารหัสจริง เช่น AES
ผลลัพธ์ของ `atob()` ในเบราว์เซอร์เหมือนกับเครื่องมือนี้ไหม?
สำหรับข้อความอังกฤษล้วนมักจะเหมือนกัน แต่ `atob()` รองรับเพียง Latin-1 และไม่สามารถจัดการข้อความ UTF-8 โดยตรง เครื่องมือนี้จึงเทียบเท่ากับการใช้ `atob()` ร่วมกับ `TextDecoder`
สามารถส่งออกผลลัพธ์หลังถอดรหัสได้ไหม?
ได้ คุณสามารถคัดลอกลง clipboard ด้วยคลิกเดียว หรือดาวน์โหลดเป็นไฟล์ `.txt` ซึ่งใช้ UTF-8 และเปิดได้ด้วย text editor หรือ Excel
อภิธานศัพท์
- Base64
- วิธีเข้ารหัสข้อมูลไบนารีเป็นข้อความโดยใช้ตัวอักษร ASCII ที่พิมพ์ได้ 64 ตัว กำหนดไว้ใน RFC 4648 ทุก 3 ไบต์จะถูกแปลงเป็น 4 อักขระ ทำให้ขนาดเพิ่มขึ้นประมาณ 33%
- atob()
- ฟังก์ชันถอดรหัส Base64 แบบเนทีฟของเบราว์เซอร์ (ASCII to Binary) รองรับเฉพาะ Latin-1 หากเป็น UTF-8 ต้องใช้ร่วมกับ TextDecoder
- Padding
- การเติมอักขระ `=` ท้าย Base64 เพื่อให้ความยาวเป็นพหุคูณของ 4 ตอนถอดรหัสมักจัดการให้โดยอัตโนมัติ ส่วนตัวแปร URL-safe มักละ padding
- URL-Safe Base64
- ตัวแปรที่ปลอดภัยสำหรับ URL ตาม RFC 4648 §5 ใช้ `-` และ `_` แทน `+` และ `/` มักใช้ใน JWT และ OAuth PKCE
- MIME Base64
- ตัวแปร Base64 ตาม RFC 2045 ที่แทรก CRLF ทุก 76 อักขระ ใช้หลัก ๆ กับการส่งไฟล์แนบอีเมล
- UTF-8
- รูปแบบเข้ารหัส Unicode แบบความยาวแปรผัน หากต้องการกู้คืนข้อความหลายไบต์ให้ถูกต้อง ควรเลือก UTF-8 ตอนถอดรหัส Base64
- InvalidCharacterError
- ข้อผิดพลาดที่ `atob()` โยนเมื่อพบช่องว่าง การขึ้นบรรทัดใหม่ หรืออักขระที่ไม่ใช่ Base64 ในข้อมูลนำเข้า
- Latin-1 (ISO-8859-1)
- ชุดอักขระแบบหนึ่งไบต์สำหรับภาษาในยุโรปตะวันตก `atob` และ `btoa` ของเบราว์เซอร์รองรับชุดนี้โดยตรงเท่านั้น
เปรียบเทียบ Base64 3 ตัวแปร
ก่อนถอดรหัส ให้ระบุชนิดของ Base64 ที่รับเข้ามาและเลือกโหมดให้ถูกต้อง เพื่อหลีกเลี่ยง error หรือผลลัพธ์เพี้ยน
| คุณสมบัติ | Standard | URL-Safe | MIME |
|---|---|---|---|
| อักขระพิเศษ | + / | - _ | + / |
| Padding (=) | ใช้ | มักละไว้ | ใช้ |
| การขึ้นบรรทัดใหม่ | ไม่มี | ไม่มี | ทุก 76 อักขระ |
| มาตรฐาน | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| สถานการณ์ทั่วไป | Data URI, การเข้ารหัสทั่วไป | JWT, พารามิเตอร์ URL, ชื่อไฟล์ | ไฟล์แนบอีเมล, การส่ง SMTP |
| ข้อควรระวังในการถอด | อาจต้องเติม padding | เปลี่ยน -_ เป็น +/ ก่อนแล้วค่อยถอด | ลบการขึ้นบรรทัดใหม่ก่อนถอด |
5 ข้อผิดพลาดที่พบบ่อยในการถอด Base64
หากถอดรหัสแล้วมี error ตารางนี้ช่วยให้หาสาเหตุได้เร็วขึ้น
| ประเภทข้อผิดพลาด | สาเหตุที่เป็นไปได้ | วิธีแก้ |
|---|---|---|
| InvalidCharacterError | มีช่องว่าง บรรทัดใหม่ หรืออักขระที่ไม่ใช่ Base64 | ล้างสตริงนำเข้าหรือใช้เครื่องมือ Base64 Clean |
| ข้อความเพี้ยนหลังถอด | เลือกชุดอักขระผิด เช่น อ่าน UTF-8 ด้วย Latin-1 | สลับไปใช้ UTF-8 |
| มี error ในพารามิเตอร์ URL | ถอดอักขระ URL-safe (`-_`) เหมือน Base64 มาตรฐาน | เปลี่ยน `-_` เป็น `+/` ก่อน |
| Padding ไม่ถูกต้อง | ความยาวไม่เป็นพหุคูณของ 4 | เติม `=` จนกระทั่งความยาว % 4 = 0 |
| สตริงว่าง | ข้อมูลนำเข้ามีแต่ช่องว่างหรือขึ้นบรรทัดใหม่ | ลบช่องว่างแล้วป้อนใหม่ |
Authoritative References
- เปรียบเทียบข้อความอย่างปลอดภัย
- การแปลงเลขฐานสอง
- รหัสซีซาร์ (Caesar Cipher)
- ตัวแปลงรหัสมอร์ส
- เลขฐานสิบหก (Hex)
- วิดีโอเป็น Base64
- Base64 เป็นวิดีโอ
- แปลงรูปภาพเป็น Base64
- Base64 เป็นรูปภาพ
- แปลงข้อความเป็น Base64
- Base64 เป็นข้อความ
- ตัวตรวจสอบแฮชไฟล์
- แปลงไฟล์เป็น Base64
- Base64 เป็นไฟล์
- แปลงเสียงเป็น Base64
- Base64 เป็นเสียง
- เข้ารหัสและถอดรหัส AES
- เข้ารหัสและถอดรหัส DES
- ตัวเข้ารหัสและถอดรหัส Base32
- Base58 การเข้ารหัสและถอดรหัส
- การเข้ารหัส Base64
- ถอดรหัส Base64
- เปรียบเทียบ Base64
- แยก Base64
- รวม Base64 หลายบรรทัด
- การจัดรูปแบบ Base64
- ตรวจสอบรูปแบบ Base64
- เข้ารหัส Base64 แบบกลุ่ม
- ถอดรหัส Base64 หลายรายการ
- เครื่องมือล้าง Base64
- เครื่องมือจัดการ padding Base64
- สถิติความยาว Base64
- Base64 เป็น Hex
- ตัวแปลง Base64 DataURL
- ตัวแปลง Base64-Hex
- ตัวแปลงรหัส Base85
- สร้างและตรวจสอบ HMAC
- เครื่องมือสร้างคีย์ PBKDF2
- แฮช MD5
- แฮช SHA-256
- แฮช SHA-1
- แฮช SHA512
- ถอดรหัส ตรวจสอบ และสร้าง JWT
- เข้ารหัสและถอดรหัส HTML
- ตัวแปลงรหัส Unicode
- การเข้ารหัส URL
- URL Safe Base64
- MIME Base64
- ทำให้โค้ด Java อ่านยาก (Obfuscate)
- ทำให้โค้ด JS อ่านยาก (Obfuscate)
- ทำให้โค้ด PHP อ่านยาก (Obfuscate)
- ทำให้โค้ด Python อ่านยาก (Obfuscate)