logo
GeekFormat

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

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

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

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

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

  • การดีบั๊ก 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

คุณสมบัติ

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

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

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

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

การเข้ารหัส 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 เป็นรูปภาพ

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

术语表

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)

Code Examples

การเข้ารหัส 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));
    }
}

Authoritative References

เข้ารหัสและถอดรหัส AESแปลงเสียงเป็น Base64การเข้ารหัส Base32การเข้ารหัส Base58ถอดรหัส Base64 หลายรายการเข้ารหัส Base64 หลายรายการล้างอักขระ Base64แปลง Data URLถอดรหัส Base64เปรียบเทียบ Base64การเข้ารหัส Base64จัดรูปแบบ Base64ตัวแปลง Base64-Hexรวม Base64 หลายบรรทัดMIME Base64จัดการ Padding Base64แยก Base64 หลายบรรทัดสถิติความยาว Base64Base64 เป็นเสียงBase64 เป็นไฟล์Base64 เป็น HexBase64 เป็นรูปภาพBase64 เป็นข้อความBase64 เป็นวิดีโอURL Safe Base64ตรวจสอบรูปแบบ Base64ตัวแปลงรหัส Base85การแปลงเลขฐานสองรหัสซีซาร์ (Caesar Cipher)เข้ารหัสและถอดรหัส DESเครื่องมือคำนวณแฮชไฟล์แปลงไฟล์เป็น Base64เลขฐานสิบหก (Hex)สร้างและตรวจสอบ HMACเข้ารหัสและถอดรหัส HTMLแปลงรูปภาพเป็น Base64ทำให้โค้ด Java อ่านยาก (Obfuscate)ทำให้โค้ด JS อ่านยาก (Obfuscate)ถอดรหัส ตรวจสอบ และสร้าง JWTแฮช MD5ตัวแปลงรหัสมอร์สเครื่องมือสร้างคีย์ PBKDF2ทำให้โค้ด PHP อ่านยาก (Obfuscate)ทำให้โค้ด Python อ่านยาก (Obfuscate)เครื่องมือสร้าง SHA-1 แฮชแฮช SHA-256เครื่องมือสร้าง SHA-512 แฮชเปรียบเทียบข้อความอย่างปลอดภัยแปลงข้อความเป็น Base64ตัวแปลงรหัส Unicodeการเข้ารหัส URLวิดีโอเป็น Base64