Base64 คืออะไร? คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น
Base64 Encoding คืออะไร?
Base64 เป็นรูปแบบการเข้ารหัสจากไบนารีเป็นข้อความ (binary-to-text) ที่แสดงข้อมูลไบนารีในรูปแบบสตริง ASCII โดยใช้ชุดอักขระ 64 ตัว มันถูกออกแบบมาแต่แรกสำหรับไฟล์แนบอีเมลผ่าน MIME (Multipurpose Internet Mail Extensions) และยังคงเป็นหนึ่งในวิธีการเข้ารหัสที่ใช้กันอย่างแพร่หลายที่สุดบนเว็บ
เมื่อคุณต้องการส่งข้อมูลไบนารี — เช่น รูปภาพ ไฟล์ หรือไบต์ที่บีบอัด — ผ่านช่องทางที่ถูกสร้างขึ้นสำหรับข้อความ Base64 คือโซลูชันที่เหมาะสม มันรับไบต์ใดๆ และแปลงเป็นสตริงตัวอักษร ตัวเลข และอักขระพิเศษสองสามตัวที่ปลอดภัยและพกพาได้
Base64 ทำงานอย่างไร?
Base64 ทำงานโดยการประมวลผลข้อมูลไบนารีเป็นกลุ่มละสามไบต์ (24 บิต) และแปลงแต่ละกลุ่มเป็นอักขระ Base64 สี่ตัว ชื่อ "Base64" มาจากข้อเท็จจริงที่ว่าชุดอักขระการเข้ารหัสใช้อักขระที่แตกต่างกัน 64 ตัว: A-Z, a-z, 0-9, + และ /
อัลกอริทึมการเข้ารหัสทีละขั้นตอน
- นำเข้า 3 ไบต์ (24 บิต) ของข้อมูลอินพุต
- แบ่งเป็นกลุ่ม 6 บิตสี่กลุ่ม
- แมปค่า 6 บิตแต่ละค่า (0-63) ไปยังตารางชุดอักขระ Base64
- เพิ่ม padding (
=) หากความยาวอินพุตหารด้วย 3 ไม่ลงตัว
นี่คือตัวอย่างที่เป็นรูปธรรม สตริง "Man" เข้ารหัสดังนี้:
M(ASCII 77) =01001101a(ASCII 97) =01100001n(ASCII 110) =01101110
รวมกัน: 01001101 01100001 01101110 → แบ่งเป็นกลุ่ม 6 บิต:
010011= 19 →T010110= 22 →W000101= 5 →F101110= 46 →u
ดังนั้น "Man" กลายเป็น "TWFu"
แล้ว Padding ล่ะ?
หากความยาวอินพุตไม่ใช่จำนวนเท่าของ 3 ไบต์ Base64 จะเพิ่มอักขระ padding (=) เพื่อให้ผลลัพธ์เป็นจำนวนเท่าของ 4 อักขระ:
- อินพุต 1 ไบต์ → อักขระ Base64 2 ตัว + อักขระ padding 2 ตัว (
==) - อินพุต 2 ไบต์ → อักขระ Base64 3 ตัว + อักขระ padding 1 ตัว (
=)
ตัวอย่างเช่น ไบต์เดียวที่ตรงกับ "M" เข้ารหัสเป็น TQ==
ตารางชุดอักขระ Base64
| Value | Char | Value | Char | Value | Char | Value | Char | |-------|------|-------|------|-------|------|-------|------| | 0 | A | 16 | Q | 32 | g | 48 | w | | 1 | B | 17 | R | 33 | h | 49 | x | | 2 | C | 18 | S | 34 | i | 50 | y | | 3 | D | 19 | T | 35 | j | 51 | z | | 4 | E | 20 | U | 36 | k | 52 | 0 | | 5 | F | 21 | V | 37 | l | 53 | 1 | | 6 | G | 22 | W | 38 | m | 54 | 2 | | 7 | H | 23 | X | 39 | n | 55 | 3 | | 8 | I | 24 | Y | 40 | o | 56 | 4 | | 9 | J | 25 | Z | 41 | p | 57 | 5 | | 10 | K | 26 | a | 42 | q | 58 | 6 | | 11 | L | 27 | b | 43 | r | 59 | 7 | | 12 | M | 28 | c | 44 | s | 60 | 8 | | 13 | N | 29 | d | 45 | t | 61 | 9 | | 14 | O | 30 | e | 46 | u | 62 | + | | 15 | P | 31 | f | 47 | v | 63 | / |
กรณีการใช้งานทั่วไปสำหรับ Base64 Encoding
ไฟล์แนบอีเมล (MIME)
Base64 ถูกสร้างขึ้นสำหรับ MIME (Multipurpose Internet Mail Extensions) โปรโตคอลอีเมลเช่น SMTP ถูกออกแบบมาสำหรับข้อความ ASCII 7 บิต ดังนั้นไฟล์แนบไบนารีเช่น PDF, รูปภาพ และไฟล์ ZIP ต้องถูกเข้ารหัสเป็น Base64 ก่อนส่งผ่านอีเมล
Data URLs ใน HTML และ CSS
Base64 ช่วยให้คุณฝังรูปภาพ ฟอนต์ และสื่ออื่นๆ โดยตรงในไฟล์ HTML หรือ CSS โดยใช้ data URLs:
<img src="data:image/png;base64,iVBORw0KGgo..." alt="Embedded Image" />
สิ่งนี้ขจัด HTTP request พิเศษ ซึ่งอาจเป็นประโยชน์สำหรับ assets ขนาดเล็ก
JSON Web Tokens (JWT)
JWT ใช้รูปแบบย่อย Base64 ที่ปลอดภัยสำหรับ URL (Base64url) เพื่อเข้ารหัส header, payload และ signature ของแต่ละโทเค็น นี่คือเหตุผลที่คุณเห็นสตริงอย่าง eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ในระบบการยืนยันตัวตน
การจัดเก็บข้อมูลไบนารีในฐานข้อมูล
ฐานข้อมูลจำนวนมากถูกปรับให้เหมาะสมสำหรับการจัดเก็บข้อความและอาจไม่จัดการไบต์ดิบได้ดี การเข้ารหัสข้อมูลไบนารีเป็น Base64 ช่วยให้คุณจัดเก็บรูปภาพ, serialized objects หรือข้อมูลที่เข้ารหัสในคอลัมน์ข้อความ
API Payloads
เมื่อส่งข้อมูลไบนารีผ่าน REST หรือ GraphQL API — โดยเฉพาะในรูปแบบ JSON — Base64 เป็นตัวเลือกมาตรฐานเพราะ JSON ไม่สามารถแสดงไบต์ดิบโดยตรงได้
Base64 เพิ่มขนาดไฟล์หรือไม่?
ใช่ การเข้ารหัส Base64 เพิ่มขนาดข้อมูลประมาณ 33% สำหรับทุกๆ 3 ไบต์ของอินพุต คุณจะได้ 4 ไบต์ของผลลัพธ์ ค่าใช้จ่ายนี้คือข้อแลกเปลี่ยนสำหรับการทำให้ข้อมูลไบนารีสามารถส่งผ่านช่องทางข้อความเท่านั้นได้
Base64 เป็นการเข้ารหัสลับ (Encryption) หรือไม่?
ไม่ใช่ นี่เป็นความเข้าใจผิดที่พบบ่อย Base64 เป็นรูปแบบการเข้ารหัส (encoding) ไม่ใช่การเข้ารหัสลับ (encryption) ใครก็ตามที่ได้รับสตริง Base64 สามารถถอดรหัสกลับเป็นข้อมูลต้นฉบับได้โดยไม่ต้องใช้กุญแจใดๆ มันไม่มีการรักษาความปลอดภัยหรือความลับใดๆ ทั้งสิ้น หากคุณต้องการปกป้องข้อมูล ให้ใช้การเข้ารหัสลับ (เช่น AES) และจากนั้นเข้ารหัสไบต์ที่เข้ารหัสแล้วด้วย Base64 เพื่อการส่งผ่านข้อมูล (เป็นทางเลือก)
Base64 เทียบกับการเข้ารหัสไบนารีเป็นข้อความแบบอื่น
| Encoding | Alphabet Size | Overhead | Best For | |----------|--------------|----------|----------| | Base64 | 64 chars | ~33% | Data transfer and embedding | | Base32 | 32 chars | ~60% | Human-readable, case-insensitive contexts | | Base16 (Hex) | 16 chars | 100% | Debugging, memory dumps, color codes | | Ascii85 | 85 chars | ~25% | Adobe PostScript, PDF streams |
Base64 ให้ความสมดุลระหว่างประสิทธิภาพด้านพื้นที่และความเข้ากันได้ที่กว้างขวาง ทำให้เป็น encoding ไบนารีเป็นข้อความที่ได้รับความนิยมมากที่สุดบนเว็บ
ลองใช้การเข้ารหัส Base64 ออนไลน์
พร้อมที่จะเข้ารหัสข้อมูลของคุณเองหรือยัง? ใช้ เครื่องมือเข้ารหัสและถอดรหัส Base64 ออนไลน์ฟรี เพื่อแปลงข้อความหรือไฟล์ทันทีในเบราว์เซอร์ของคุณ ไม่ต้องติดตั้งหรือสมัครสมาชิก