การเข้ารหัส Base64

ข้อความอินพุต
0 อักขระ

เครื่องมือเข้ารหัสและถอดรหัส Base64 ออนไลน์ฟรี รองรับชุดอักขระ UTF-8/ASCII/ISO-8859-1 พร้อม 3 ตัวแปร: Standard, URL-Safe และ MIME แสดงอัตราการขยายตัวของข้อมูลแบบเรียลไทม์ การตัดบรรทัด MIME สอดคล้องกับมาตรฐาน RFC 2045

คำแนะนำที่เกี่ยวข้อง

การเข้ารหัส Base64 คืออะไร?

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 ที่ปลอดภัย เพื่อให้แน่ใจว่าอักขระหลายไบต์เช่น จีน ญี่ปุ่น และอีโมจิถูกเข้ารหัสอย่างถูกต้อง การคำนวณทั้งหมดทำในเครื่อง ข้อมูลจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ใดๆ เปิดแผงเครือข่ายในเครื่องมือพัฒนาของเบราว์เซอร์เพื่อตรวจสอบว่าไม่มีคำขอภายนอกในระหว่างกระบวนการทั้งหมด

กรณีการใช้งาน

  • การดีบั๊ก JWT: ถอดรหัสส่วนหัวและส่วนเพย์โหลดของ JWT (รูปแบบ Base64URL) เพื่อดูเนื้อหาของการอ้างสิทธิ์โทเค็น
  • Basic Auth: เข้ารหัสชื่อผู้ใช้:รหัสผ่านเป็นข้อมูลรับรองการตรวจสอบสิทธิ์ HTTP Basic
  • การพัฒนา OAuth: สร้าง code_verifier หรือตรวจสอบ code_challenge ในสถานการณ์ PKCE
  • การดีบั๊ก API: เข้ารหัสข้อมูล JSON หรือถอดรหัสฟิลด์ Base64 ที่ส่งคืนโดย API
  • การฝังรูปภาพ Data URI: แปลงไอคอนขนาดเล็กเป็นรูปแบบ data:image/...;base64,... เพื่อฝังใน CSS/HTML
  • การเข้ารหัสไฟล์แนบอีเมล: เข้ารหัสไฟล์แนบอีเมลไบนารีในรูปแบบ MIME Base64

วิธีการใช้งาน

  1. เลือกโหมด: คลิก Encode (เข้ารหัส) หรือ Decode (ถอดรหัส) เพื่อเปลี่ยนทิศทางการประมวลผล
  2. เลือกตัวแปร: Standard (มาตรฐาน), URL-Safe (JWT/OAuth), MIME (รูปแบบอีเมลพร้อมการตัดบรรทัด 76 อักขระ)
  3. ป้อนเนื้อหา: วางข้อความหรือสตริง Base64 ระบบจะประมวลผลอัตโนมัติแบบเรียลไทม์
  4. ดูสถิติ: ที่ด้านล่างจะแสดงจำนวนอักขระและอัตราการขยายตัวของปริมาณ (การเข้ารหัสจะทำให้ปริมาณเพิ่มขึ้นประมาณ 33%)
  5. คัดลอกผลลัพธ์: คัดลอกสตริง Base64 หรือข้อความที่ถอดรหัสแล้วด้วยคลิกเดียว

คุณสมบัติ

  • สลับ Encode/Decode ได้ด้วยคลิกเดียว: สลับระหว่างโหมดเข้ารหัสและถอดรหัสได้อย่างอิสระ เอาต์พุตจะกลายเป็นอินพุตโดยตรงเพื่อรองรับการประมวลผลแบบวนซ้ำ
  • รองรับ 3 ชุดอักขระ: UTF-8 (จีน/ญี่ปุ่น/อีโมจิ), ASCII, ISO-8859-1 ครอบคลุมหลายสถานการณ์อย่างมืออาชีพ
  • 3 ตัวแปรสำหรับเอาต์พุต: Standard (มาตรฐาน), URL-Safe (ปลอดภัยสำหรับ JWT/OAuth/PKCE), MIME (มาตรฐาน RFC 2045 พร้อมการตัดบรรทัด 76 อักขระ)
  • สถิติปริมาณแบบเรียลไทม์: แสดงจำนวนอักขระอินพุต/เอาต์พุตและอัตราการขยายตัวแบบเรียลไทม์ (Base64 ทำให้ปริมาณเพิ่มขึ้นประมาณ 33%)
  • ข้อความข้อผิดพลาดที่ชัดเจน: เมื่ออักขระอยู่นอกช่วง จะแสดงข้อความข้อผิดพลาดเฉพาะเจาะจงแทนที่จะเป็นข้อผิดพลาดธรรมดา
  • ตัวคั่นที่ลากได้: บนพีซีสามารถปรับสัดส่วนของพื้นที่แก้ไขซ้ายและขวาเพื่อโฟกัสที่งานปัจจุบัน
  • แท็บอิสระสำหรับมือถือ: ผู้ใช้โทรศัพท์/แท็บเล็ตสลับระหว่างพื้นที่อินพุตและเอาต์พุตอย่างอิสระเพื่อประสบการณ์ที่ราบรื่น

ตัวอย่างโค้ด

การเข้ารหัส Base64 ใน JavaScript (รองรับจีน UTF-8)

// เข้ารหัส (รองรับข้อความ 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 世界

การเข้ารหัส Base64 ใน Python

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)

การเข้ารหัส Base64 ใน Java

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));
    }
}

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

การเข้ารหัส Base64 เหมือนกับการเข้ารหัสลับหรือไม่?

ไม่ Base64 เพียงแปลงข้อความเป็นรูปแบบการแสดงผลอื่นที่ย้อนกลับได้ ทุกคนสามารถถอดรหัสกลับเป็นข้อความต้นฉบับได้ หากเกี่ยวข้องกับข้อมูลที่ละเอียดอ่อน (รหัสผ่าน, โทเค็น) ให้ใช้แผนการเข้ารหัสลับที่แท้จริง เช่น AES Base64 เหมาะสำหรับการแปลงรูปแบบข้อมูลเท่านั้น เพื่ออำนวยความสะดวกในการส่งข้อมูลไบนารีผ่านระบบข้อความ

เครื่องมือเข้ารหัส AES

ข้อมูลจะใหญ่ขึ้นเท่าใดหลังจากเข้ารหัส Base64?

การเข้ารหัส Base64 จะทำให้ปริมาณข้อมูลต้นฉบับเพิ่มขึ้นประมาณ 33% เนื่องจากทุก 3 ไบต์ (24 บิต) จะถูกเข้ารหัสเป็น 4 อักขระ Base64 ตัวอย่างเช่น ข้อความ 100 ไบต์หลังจากเข้ารหัสจะมีขนาดประมาณ 133 ไบต์ อัตราการขยายตัวจะแสดงแบบเรียลไทม์ที่ด้านล่างของเครื่องมือเพื่อให้คุณประมาณขนาดข้อมูล ตัวอย่าง: `Hello` → `SGVsbG8=` (ปริมาณ +33%)

เครื่องมือสถิติ Base64

ความแตกต่างระหว่าง 3 ตัวแปร Standard, URL-Safe และ MIME คืออะไร?

Standard คือ Base64 มาตรฐานที่ใช้อักขระ A-Z, a-z, 0-9, +, / URL-Safe จะแทนที่ +/ ด้วย -_ ทำให้เหมาะสำหรับพารามิเตอร์ URL และโทเค็น JWT MIME จะแทรกการตัดบรรทัดทุก 76 อักขระ สอดคล้องกับมาตรฐานอีเมล RFC 2045 เหมาะสำหรับไฟล์แนบอีเมลและข้อความหลายบรรทัด

URL-Safe Base64MIME Base64

จะถอดรหัสส่วนหัวหรือเพย์โหลดของ JWT ได้อย่างไร?

JWT ใช้การเข้ารหัส Base64URL (ตัวแปร URL-Safe) หลังจากเลือกโหมด URL-Safe เพียงแค่วางส่วนแรก (ส่วนหัว) หรือส่วนที่สอง (เพย์โหลด) ของ JWT เพื่อถอดรหัส หมายเหตุ: ส่วนที่สามของ JWT คือลายเซ็น และไม่ควรถอดรหัสหรือตรวจสอบที่นี่

เครื่องมือ JWT

Padding (การเติม) ใน Base64 คืออะไร?

ความยาวของผลลัพธ์การเข้ารหัส Base64 ต้องเป็นพหุคูณของ 4 เมื่อความยาวอินพุตไม่ใช่พหุคูณของ 3 ส่วนท้ายจะถูกเติมด้วยอักขระ = ตัวแปร URL-Safe ไม่ใช้ padding เครื่องมือจะจัดการ padding โดยอัตโนมัติและจะลบอักขระ = โดยอัตโนมัติเมื่อถอดรหัส

เครื่องมือ Padding Base64

ทำไม btoa และ atob ใน JavaScript ไม่รองรับภาษาจีน?

btoa และ atob เป็น API ดั้งเดิมของเบราว์เซอร์ที่ทำงานกับชุดอักขระ Latin-1 (ISO-8859-1) ซึ่งแต่ละอักขระใช้พื้นที่ 1 ไบต์ อักขระจีนใช้พื้นที่ 3 ไบต์ใน UTF-8 ดังนั้นการป้อนโดยตรงจะทำให้เกิดข้อผิดพลาด วิธีแก้ไขคือใช้ encodeURIComponent เพื่อแปลงภาษาจีนเป็นรูปแบบลำดับไบต์ %xx UTF-8 ก่อน จากนั้นใช้ unescape เพื่อแปลงเป็นสตริง Latin-1 และสุดท้ายใช้ btoa เพื่อเข้ารหัส

Data URI Scheme คืออะไร? จะฝังรูปภาพด้วย Base64 ได้อย่างไร?

Data URI เป็นรูปแบบ URI ที่ช่วยให้ฝังข้อมูลลงใน URL ได้โดยตรง ไวยากรณ์คือ `data:[<mediatype>][;base64],<data>` ตัวอย่างเช่น `data:image/png;base64,iVBORw0KGgo...` มักใช้สำหรับฝังไอคอนขนาดเล็ก รูปภาพพื้นหลัง CSS ฯลฯ เพื่อลดจำนวนคำขอ HTTP แต่ Base64 จะทำให้ปริมาณเพิ่มขึ้น 33% ดังนั้นจึงเหมาะสำหรับไฟล์ขนาดเล็กเท่านั้น ไฟล์ขนาดใหญ่ควรใช้ URL ปกติ

เครื่องมือ Data URIBase64 เป็นรูปภาพ

อภิธานศัพท์

RFC 4648
มาตรฐานอย่างเป็นทางการสำหรับการเข้ารหัส Base16/Base32/Base64 ที่เผยแพร่โดย IETF กำหนดตัวอักษร 2 ชุด: Base64 มาตรฐานและ URL-Safe Base64 รวมถึงกฎสำหรับ padding การตัดบรรทัด การจัดการอักขระที่ไม่ใช่ตัวอักษร ฯลฯ เป็นมาตรฐานเดอแฟกโตที่ใช้งานได้สำหรับการเข้ารหัส Base64 แทนที่ RFC 3548 ก่อนหน้าเครื่องมือ URL-Safe Base64เครื่องมือ Padding Base64
RFC 2045 (MIME)
มาตรฐานส่วนขยายจดหมายอินเทอร์เน็ตหลายวัตถุประสงค์ (MIME) นำ Base64 มาใช้เป็นวิธีการเข้ารหัสสำหรับการส่งเนื้อหาจดหมายเป็นครั้งแรก กำหนดว่าการเข้ารหัส Base64 ต้องไม่เกิน 76 อักขระต่อบรรทัดและคั่นด้วย CRLF เรียกว่าตัวแปร MIME Base64เครื่องมือ MIME Base64
Base64URL (URL-Safe Base64)
ตัวแปรที่ปลอดภัยสำหรับ URL ที่กำหนดใน RFC 4648 §5 แทนที่ + ของ Base64 มาตรฐานด้วย - และ / ด้วย _ และมักจะข้ามอักขระ padding = ใช้กันอย่างแพร่หลายในสถานการณ์เช่น โทเค็น JWT, OAuth PKCE, พารามิเตอร์ URL และชื่อไฟล์เครื่องมือ URL-Safe Base64เครื่องมือ JWT
MIME Base64
ตัวแปร Base64 ที่สอดคล้องกับมาตรฐาน RFC 2045 ซึ่งแทรกอักขระขึ้นบรรทัดใหม่ (CRLF) ทุก 76 อักขระ ใช้เป็นหลักสำหรับการส่งไฟล์แนบอีเมล เนื่องจากโปรโตคอล SMTP รุ่นแรกมีข้อจำกัดเกี่ยวกับความยาวของบรรทัดเดียวเครื่องมือ MIME Base64
Padding (การเติม)
ความยาวของผลลัพธ์การเข้ารหัส Base64 ต้องเป็นพหุคูณของ 4 เมื่อจำนวนไบต์อินพุตไม่ใช่พหุคูณของ 3 ส่วนท้ายจะถูกเติมด้วยอักขระ = Base64 มาตรฐานใช้ padding Base64URL มักจะข้ามมันเครื่องมือ Padding Base64
ชุดตัวอักษร Base64
ชุดอักขระ 64 ตัวที่ใช้ในการเข้ารหัส Base64 ชุดตัวอักษร Base64 มาตรฐาน: A-Z (26), a-z (26), 0-9 (10), +, / รวม 64 อักขระ บวกกับอักขระเติม =
btoa / atob
API ดั้งเดิมของเบราว์เซอร์สำหรับการเข้ารหัส/ถอดรหัส Base64 btoa (binary to ASCII) ใช้สำหรับเข้ารหัส atob (ASCII to binary) ใช้สำหรับถอดรหัส หมายเหตุ: API เหล่านี้รองรับเฉพาะชุดอักขระ Latin-1 เท่านั้น สำหรับการประมวลผลภาษาจีน ต้องรวมเข้ากับการเข้ารหัสใหม่ UTF-8
Data URI Scheme
รูปแบบ URI ที่ช่วยให้ฝังไฟล์ขนาดเล็กลงใน URL ได้โดยตรง รูปแบบคือ data:[<mediatype>][;base64],<data> มักใช้สำหรับฝังไอคอนขนาดเล็กและรูปภาพพื้นหลัง CSS เพื่อลดคำขอ HTTPเครื่องมือ Data URIBase64 เป็นรูปภาพ
HTTP Basic Authentication
วิธีการตรวจสอบสิทธิ์ในโปรโตคอล HTTP ชื่อผู้ใช้และรหัสผ่านจะถูกรวมด้วยทวิภาค เข้ารหัสใน Base64 และส่งในส่วนหัว Authorization ของคำขอ รูปแบบ: Authorization: Basic <base64(ชื่อผู้ใช้:รหัสผ่าน)>ตัวสร้างส่วนหัว Auth
อัตราการขยายตัว Base64
สัดส่วนที่ปริมาณข้อมูลเพิ่มขึ้นหลังจากเข้ารหัส Base64 ทุก 3 ไบต์ (24 บิต) ถูกเข้ารหัสเป็น 4 อักขระ Base64 ดังนั้นปริมาณจะเพิ่มขึ้นประมาณ 33% (4/3 ≈ 1.333) ด้วย padding อัตราการขยายตัวจะสูงขึ้นเล็กน้อย

เปรียบเทียบ 3 ตัวแปร Base64

คุณสมบัติStandardURL-SafeMIME
อักขระพิเศษ+ /- _+ /
Padding (=)ใช้มักจะข้ามใช้
การตัดบรรทัดไม่มีไม่มีบรรทัดทุก 76 อักขระ
มาตรฐานRFC 4648 §4RFC 4648 §5RFC 2045
สถานการณ์ทั่วไปData URI, การเข้ารหัสทั่วไปJWT, พารามิเตอร์ URL, ชื่อไฟล์ไฟล์แนบอีเมล, การส่ง SMTP

ตารางเปรียบเทียบการเข้ารหัสชุด Base

การเข้ารหัสจำนวนอักขระลักษณะชุดอักขระการขยายตัวของข้อมูลการใช้งานทั่วไป
Base16 (Hex)160-9, A-F100%การดีบั๊ก, การแสดงแฮช
Base3232A-Z, 2-7 (ตัวพิมพ์ใหญ่ที่ไม่สับสน)60%DNS, คีย์ TOTP, QR code
Base5858ยกเว้นอักขระที่สับสนง่าย 0/O/I/l38%ที่อยู่ Bitcoin, คริปโตเคอเรนซี
Base6262A-Z, a-z, 0-934%ย่อ URL, การเข้ารหัส ID
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT (ตัวแปร URL-Safe)

Authoritative References