การเข้ารหัส Base64
เครื่องมือเข้ารหัสและถอดรหัส Base64 ออนไลน์ฟรี รองรับชุดอักขระ UTF-8/ASCII/ISO-8859-1 พร้อม 3 ตัวแปร: Standard, URL-Safe และ MIME แสดงอัตราการขยายตัวของข้อมูลแบบเรียลไทม์ การตัดบรรทัด MIME สอดคล้องกับมาตรฐาน RFC 2045
เครื่องมือเข้ารหัสและถอดรหัส Base64 ออนไลน์ฟรี รองรับชุดอักขระ UTF-8/ASCII/ISO-8859-1 พร้อม 3 ตัวแปร: Standard, URL-Safe และ MIME แสดงอัตราการขยายตัวของข้อมูลแบบเรียลไทม์ การตัดบรรทัด MIME สอดคล้องกับมาตรฐาน RFC 2045
ไม่ Base64 เพียงแปลงข้อความเป็นรูปแบบการแสดงผลอื่นที่ย้อนกลับได้ ทุกคนสามารถถอดรหัสกลับเป็นข้อความต้นฉบับได้ หากเกี่ยวข้องกับข้อมูลที่ละเอียดอ่อน (รหัสผ่าน, โทเค็น) ให้ใช้แผนการเข้ารหัสลับที่แท้จริง เช่น AES Base64 เหมาะสำหรับการแปลงรูปแบบข้อมูลเท่านั้น เพื่ออำนวยความสะดวกในการส่งข้อมูลไบนารีผ่านระบบข้อความ
เครื่องมือเข้ารหัส AESการเข้ารหัส Base64 จะทำให้ปริมาณข้อมูลต้นฉบับเพิ่มขึ้นประมาณ 33% เนื่องจากทุก 3 ไบต์ (24 บิต) จะถูกเข้ารหัสเป็น 4 อักขระ Base64 ตัวอย่างเช่น ข้อความ 100 ไบต์หลังจากเข้ารหัสจะมีขนาดประมาณ 133 ไบต์ อัตราการขยายตัวจะแสดงแบบเรียลไทม์ที่ด้านล่างของเครื่องมือเพื่อให้คุณประมาณขนาดข้อมูล ตัวอย่าง: `Hello` → `SGVsbG8=` (ปริมาณ +33%)
เครื่องมือสถิติ Base64Standard คือ Base64 มาตรฐานที่ใช้อักขระ A-Z, a-z, 0-9, +, / URL-Safe จะแทนที่ +/ ด้วย -_ ทำให้เหมาะสำหรับพารามิเตอร์ URL และโทเค็น JWT MIME จะแทรกการตัดบรรทัดทุก 76 อักขระ สอดคล้องกับมาตรฐานอีเมล RFC 2045 เหมาะสำหรับไฟล์แนบอีเมลและข้อความหลายบรรทัด
URL-Safe Base64MIME Base64JWT ใช้การเข้ารหัส Base64URL (ตัวแปร URL-Safe) หลังจากเลือกโหมด URL-Safe เพียงแค่วางส่วนแรก (ส่วนหัว) หรือส่วนที่สอง (เพย์โหลด) ของ JWT เพื่อถอดรหัส หมายเหตุ: ส่วนที่สามของ JWT คือลายเซ็น และไม่ควรถอดรหัสหรือตรวจสอบที่นี่
เครื่องมือ JWTความยาวของผลลัพธ์การเข้ารหัส Base64 ต้องเป็นพหุคูณของ 4 เมื่อความยาวอินพุตไม่ใช่พหุคูณของ 3 ส่วนท้ายจะถูกเติมด้วยอักขระ = ตัวแปร URL-Safe ไม่ใช้ padding เครื่องมือจะจัดการ padding โดยอัตโนมัติและจะลบอักขระ = โดยอัตโนมัติเมื่อถอดรหัส
เครื่องมือ Padding Base64btoa และ atob เป็น API ดั้งเดิมของเบราว์เซอร์ที่ทำงานกับชุดอักขระ Latin-1 (ISO-8859-1) ซึ่งแต่ละอักขระใช้พื้นที่ 1 ไบต์ อักขระจีนใช้พื้นที่ 3 ไบต์ใน UTF-8 ดังนั้นการป้อนโดยตรงจะทำให้เกิดข้อผิดพลาด วิธีแก้ไขคือใช้ encodeURIComponent เพื่อแปลงภาษาจีนเป็นรูปแบบลำดับไบต์ %xx UTF-8 ก่อน จากนั้นใช้ unescape เพื่อแปลงเป็นสตริง Latin-1 และสุดท้ายใช้ btoa เพื่อเข้ารหัส
Data URI เป็นรูปแบบ URI ที่ช่วยให้ฝังไฟล์ขนาดเล็กลงใน URL โดยตรง ไวยากรณ์: `data:[<mediatype>][;base64],<data>` ตัวอย่าง: `data:image/png;base64,iVBORw0KGgo...` มักใช้สำหรับฝังไอคอนขนาดเล็ก รูปภาพพื้นหลัง CSS ฯลฯ เพื่อลดจำนวนคำขอ HTTP แต่ Base64 จะทำให้ปริมาณเพิ่มขึ้น 33% ดังนั้นจึงเหมาะสำหรับไฟล์ขนาดเล็กเท่านั้น ไฟล์ขนาดใหญ่ควรใช้ URL ปกติ
เครื่องมือ Data URIBase64 เป็นรูปภาพBase64 เป็นแผนการเข้ารหัสข้อมูลไบนารีเป็นข้อความตามอักขระ ASCII ที่พิมพ์ได้ 64 ตัว ซึ่งกำหนดครั้งแรกโดย RFC 2045 (มาตรฐาน MIME) Base64 จะแปลงทุก 3 ไบต์ (24 บิต) เป็น 4 อักขระ Base64 (A-Z, a-z, 0-9, +, /) ทำให้ข้อมูลไบนารีสามารถส่งได้อย่างปลอดภัยผ่านระบบที่รองรับเฉพาะข้อความ เช่น ส่วนหัว HTTP เพย์โหลด JSON เอกสาร XML หรือพารามิเตอร์คิวรี URL
**Base64 ไม่ใช่การเข้ารหัสลับ** มันเพียงให้การแปลงรูปแบบข้อมูล ทุกคนสามารถถอดรหัสได้อย่างง่ายดาย หากคุณต้องการปกป้องข้อมูลที่ละเอียดอ่อน ให้ใช้แผนการเข้ารหัสลับที่แท้จริง เช่น AES การใช้งานทั่วไปของ Base64 ได้แก่: HTTP Basic Authentication (`Authorization: Basic dXNlcjpwYXNz`), ส่วนหัวและส่วนเพย์โหลดของโทเค็น JWT (รูปแบบ Base64URL), Data URI (`data:image/png;base64,...`), การเข้ารหัส MIME ของไฟล์แนบอีเมล ฯลฯ
**URL-Safe Base64** (RFC 4648 §5) จะแทนที่ +/ ของ Base64 มาตรฐานด้วย -_ และมักจะข้าม padding = ซึ่งช่วยให้ผลลัพธ์การเข้ารหัสสามารถปรากฏใน URL เส้นทางไฟล์ หรือฟิลด์ JSON ได้อย่างปลอดภัย โทเค็น JWT, code_verifier ของ OAuth PKCE และ AWS Signature V4 ทั้งหมดใช้การเข้ารหัส URL-Safe Base64
**การตัดบรรทัด MIME** เป็นมาตรฐาน RFC 2045 ที่กำหนดว่าแต่ละบรรทัดต้องไม่เกิน 76 อักขระ เมื่อเนื้อหา Base64 ถูกใช้ในอีเมลหรือสถานการณ์บางอย่างที่ต้องการการตัดบรรทัดเพื่อการแสดงผล ตัวแปร MIME จะแทรกอักขระขึ้นบรรทัดใหม่ (`\n`) อัตโนมัติทุก 76 อักขระ นี่คือรูปแบบมาตรฐานสำหรับการส่งไฟล์แนบอีเมล
เครื่องมือใช้ **API btoa/atob ดั้งเดิม** ของเบราว์เซอร์ร่วมกับตรรกะการประมวลผล UTF-8 ที่ปลอดภัย เพื่อให้แน่ใจว่าอักขระหลายไบต์เช่น จีน ญี่ปุ่น และอีโมจิถูกเข้ารหัสอย่างถูกต้อง การคำนวณทั้งหมดทำในเครื่อง ข้อมูลจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ใดๆ เปิดแผงเครือข่ายในเครื่องมือพัฒนาของเบราว์เซอร์เพื่อตรวจสอบว่าไม่มีคำขอภายนอกในระหว่างกระบวนการทั้งหมด
| คุณสมบัติ | Standard | URL-Safe | MIME |
|---|---|---|---|
| อักขระพิเศษ | + / | - _ | + / |
| Padding(=) | ใช้ | มักจะข้าม | ใช้ |
| การตัดบรรทัด | ไม่มี | ไม่มี | บรรทัดทุก 76 อักขระ |
| มาตรฐาน | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| สถานการณ์ทั่วไป | Data URI, การเข้ารหัสทั่วไป | JWT, พารามิเตอร์ URL, ชื่อไฟล์ | ไฟล์แนบอีเมล, การส่ง SMTP |
| การเข้ารหัส | จำนวนอักขระ | ลักษณะชุดอักขระ | การขยายตัวของข้อมูล | การใช้งานทั่วไป |
|---|---|---|---|---|
Base16 (Hex) | 16 | 0-9, A-F | 100% | การดีบั๊ก, การแสดงแฮช |
Base32 | 32 | A-Z, 2-7(ตัวพิมพ์ใหญ่ที่ไม่สับสน) | 60% | DNS, คีย์ TOTP, QR code |
Base58 | 58 | ยกเว้นอักขระที่สับสนง่าย 0/O/I/l | 38% | ที่อยู่ Bitcoin, คริปโตเคอเรนซี |
Base62 | 62 | A-Z, a-z, 0-9 | 34% | ย่อ URL, การเข้ารหัส ID |
Base64 | 64 | A-Z, a-z, 0-9, +, / | 33% | Data URI, MIME, JWT(ตัวแปร URL-Safe) |
// 编码(支持 UTF-8 中文)
function b64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}
// 解码(支持 UTF-8 中文)
function b64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}
// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
return btoa(unescape(encodeURIComponent(str)))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/, '');
}
console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界import base64
# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode()) # SGVsbG8g5LiW55WM
# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Hello 世界
# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode()) # SGVsbG8g5LiW55WM(无 padding 需手动去除)
# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String text = "Hello 世界";
// Standard 编码
String encoded = Base64.getEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(encoded); // SGVsbG8g5LiW55WM
// Standard 解码
String decoded = new String(
Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(decoded); // Hello 世界
// URL-Safe 编码(用于 JWT / URL)
String urlSafe = Base64.getUrlEncoder().withoutPadding()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(urlSafe);
// MIME 编码(76字符换行)
String mime = Base64.getMimeEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
}
}