Cryptology Academy · บทเรียน

การเข้ารหัส Base64: ทำงานอย่างไร

ไขปริศนาของ Base64 ซึ่งเป็นรูปแบบการเข้ารหัสที่ใช้ในอีเมล JWT และการส่งข้อมูล

บทเรียน 1 จาก 413 ขั้นตอน

การเข้ารหัส Base64: ทำงานอย่างไร เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดเลขฐานสองจึงต้องมีการแสดงแทนเป็นข้อความ

ระบบจำนวนมาก รวมถึงอีเมล ส่วนหัว HTTP และ XML ถูกออกแบบมาให้จัดการข้อความ ไม่ใช่ข้อมูลไบนารีโดยพลการ ค่าของไบต์ 0x00 (ค่าโมฆะ) หรือ 0x1A (อักขระควบคุม) อาจทำให้การวิเคราะห์ล้มเหลวหรือข้อมูลเสียหายได้

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

การจัดกลุ่ม 6 บิตจากไบต์ 8 บิต

Base64 ทำงานโดยนำไบต์ 8 บิตสามไบต์ (รวมทั้งหมด 24 บิต) มาแบ่งเป็นกลุ่ม 6 บิตสี่กลุ่ม แต่ละกลุ่ม 6 บิตแทนค่าได้ตั้งแต่ 0 ถึง 63 ซึ่งจะจับคู่กับอักขระหนึ่งตัวในชุดอักขระ Base64

อัตราส่วน 3 ต่อ 4 นี้หมายความว่าไบต์ข้อมูลขาเข้าทุก 3 ไบต์จะให้ผลลัพธ์ขาออก 4 อักขระ ทำให้ขนาดเพิ่มขึ้น 33% การคำนวณลงตัวเพราะ 3 ไบต์ = 24 บิต = กลุ่มละ 6 บิตจำนวน 4 กลุ่ม

ชุดอักขระ Base64

ชุดอักขระ Base64 มี 64 อักขระ ได้แก่ ตัวพิมพ์ใหญ่ A-Z (ดัชนี 0-25) ตัวพิมพ์เล็ก a-z (ดัชนี 26-51) ตัวเลข 0-9 (ดัชนี 52-61) เครื่องหมายบวก + (ดัชนี 62) และเครื่องหมายทับ / (ดัชนี 63)

ชุดอักขระนี้หลีกเลี่ยงอักขระควบคุมทั้งหมดและเครื่องหมายวรรคตอนส่วนใหญ่ที่อาจก่อปัญหาในระบบข้อความ อักขระทุกตัวในผลลัพธ์ Base64 เป็นอักขระ ASCII ที่พิมพ์ได้และปลอดภัยสำหรับใช้ในโปรโตคอลข้อความแทบทุกชนิด

การเติมเครื่องหมาย =

เมื่อความยาวข้อมูลขาเข้าไม่ใช่จำนวนเท่าของ 3 ไบต์ จะต้องเติมข้อมูล หากเหลือ 1 ไบต์ จะเติมให้เป็นกลุ่ม 12 บิต ทำให้ได้อักขระ Base64 2 ตัวตามด้วย "==" หากเหลือ 2 ไบต์ จะได้อักขระ Base64 3 ตัวตามด้วย "="

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

ตัวอย่างการเข้ารหัส: Man

ค่า ASCII ของ "Man" คือ M=77 (01001101), a=97 (01100001), n=110 (01101110) เมื่อนำมาต่อกัน: 010011010110000101101110

แบ่งเป็นกลุ่มละ 6 บิต: 010011 | 010110 | 000101 | 101110 = 19 | 22 | 5 | 46 เมื่อค้นหาจากชุดอักขระ Base64: 19=T, 22=W, 5=F, 46=u ดังนั้น "Man" จึงเข้ารหัสเป็น "TWFu"

รูปแบบ Base64url

Base64 มาตรฐานใช้ + และ / ซึ่งมีความหมายพิเศษในที่อยู่ URL และชื่อไฟล์ Base64url เป็นรูปแบบหนึ่งที่แทนที่ + ด้วย - และ / ด้วย _ ทำให้ปลอดภัยสำหรับใช้ในที่อยู่ URL ชื่อไฟล์ และค่าคุกกี้

JWT (JSON Web Tokens) ใช้การเข้ารหัส Base64url สำหรับส่วนหัวและส่วนข้อมูลบรรทุก มาตรฐาน JOSE (JSON Object Signing and Encryption) สร้างขึ้นบน Base64url ทั้งหมด

Base64 ใช้งานที่ใด

Base64 ใช้ในไฟล์แนบอีเมล MIME (เข้ารหัสไฟล์ไบนารีสำหรับอีเมลที่ใช้ข้อความ) โทเค็น JWT (เข้ารหัสส่วนหัวและส่วนข้อมูลบรรทุก JSON) ยูอาร์ไอข้อมูลใน HTML (ฝังรูปภาพโดยตรงใน CSS/HTML) และรูปแบบ PEM ของใบรับรอง X.509

รูปแบบ PEM (Privacy Enhanced Mail) จะห่อใบรับรองไบนารีที่เข้ารหัสด้วย DER ไว้ใน Base64 ระหว่างส่วนหัว "-----BEGIN CERTIFICATE-----" และ "-----END CERTIFICATE-----"

Base64 ไม่ได้ให้ความปลอดภัย

Base64 ไม่ใช่การเข้ารหัสลับ แต่เป็นการเข้ารหัสที่ย้อนกลับได้โดยไม่ใช้กุญแจ ผู้ใดก็ตามที่เห็นข้อมูลที่เข้ารหัสด้วย Base64 ก็สามารถถอดรหัสได้ทันทีโดยใช้เครื่องมือที่มีให้ใช้อย่างเสรี หรือคำสั่งบรรทัดเดียวในภาษาโปรแกรมใดก็ได้

ข้อผิดพลาดที่พบบ่อยคือการคิดว่ารหัสผ่านหรือโทเค็นที่เข้ารหัสด้วย Base64 ถูก "ซ่อนอยู่" แต่ความจริงไม่ใช่เช่นนั้น หากคุณถอดรหัสได้ ผู้โจมตีก็ทำได้เช่นกัน ความปลอดภัยต้องอาศัยการเข้ารหัสลับ ไม่ใช่การเข้ารหัสข้อมูล

การถอดรหัสทำได้ง่าย

การถอดรหัส Base64 ง่ายพอ ๆ กับการเข้ารหัส กลุ่ม Base64 ที่มีอักขระ 4 ตัวแต่ละกลุ่มจะถูกจับคู่กลับเป็นค่าขนาด 6 บิต จากนั้นนำมาต่อกันและแบ่งเป็นไบต์ เครื่องหมายเติมเต็ม = จะระบุว่ากลุ่มสุดท้ายแทนไบต์จำนวนเท่าใด

ใน Python: import base64; base64.b64decode("TWFu") ให้ผลเป็น b"Man" กระบวนการนี้ให้ผลแน่นอน ไม่สูญเสียข้อมูล และไม่ต้องใช้กุญแจหรือความลับ

ค่าใช้จ่ายด้านขนาดและประสิทธิภาพของ Base64

ค่าใช้จ่ายด้านขนาด 33% ของ Base64 (ไบต์ผลลัพธ์ 4 ไบต์ต่อไบต์ข้อมูลขาเข้า 3 ไบต์) รวมกับการขึ้นบรรทัดใหม่ทุก 76 อักขระ (ตามที่ MIME กำหนด) ทำให้ Base64 ไม่มีประสิทธิภาพสำหรับการถ่ายโอนไบนารีขนาดใหญ่

โปรโตคอลไบนารีสมัยใหม่ เช่น HTTP/2 ที่มีการจัดกรอบแบบไบนารี และ WebSockets ที่มีเฟรมไบนารี สามารถจัดการไบต์ดิบได้โดยตรง จึงไม่จำเป็นต้องใช้ Base64 ในบริบทที่ต้องการประสิทธิภาพสูง

Base32 และ Base58: รูปแบบการเข้ารหัสอื่น

Base32 ใช้ชุดอักขระ 32 ตัว (A-Z และ 2-7) ทำให้ผลลัพธ์ยาวกว่า Base64 แต่ไม่แยกแยะตัวพิมพ์เล็กใหญ่ และเหมาะสำหรับบริบทที่ตัวพิมพ์อาจสูญหายหรือเปลี่ยนแปลง โดยทั่วไปความลับที่ใช้ร่วมกันของ TOTP มักเข้ารหัสด้วย Base32

Base58 ซึ่ง Bitcoin ใช้สำหรับที่อยู่กระเป๋าเงิน จะตัดอักขระที่ดูคล้ายกันจนแยกแยะได้ยาก เช่น 0, O, I และ l ออก วิธีนี้ช่วยลดข้อผิดพลาดจากการคัดลอกที่อยู่ ข้อแลกเปลี่ยนคือ Base58 ไม่ใช่กำลังของ 2 ทำให้การเข้ารหัสซับซ้อนขึ้นเล็กน้อย

แบบทดสอบชุดอักขระ Base64

ทดสอบความรู้ของคุณเกี่ยวกับการเข้ารหัส Base64

ประเด็นสำคัญ: การเข้ารหัส Base64

Base64 แปลงข้อมูลไบนารีเป็นข้อความโดยจัดกลุ่มบิตเป็นชุดละ 6 บิต แล้วจับคู่กับชุดอักขระ 64 ตัว ผลลัพธ์มีขนาดเพิ่มขึ้น 33% และใช้เครื่องหมายเติมเต็ม = สำหรับข้อมูลที่มีจำนวนไบต์ไม่เป็นจำนวนเท่าของ 3

Base64 ไม่ได้ให้ความปลอดภัย แต่ใช้เพื่อให้ส่งข้อมูลร่วมกับระบบต่าง ๆ ได้ ไม่ใช่เพื่อรักษาความลับ Base64url (-/_) เป็นรูปแบบที่ปลอดภัยสำหรับ URL และใช้ใน JWT การถอดรหัสไม่ต้องใช้กุญแจและใช้เวลาเพียงไม่กี่มิลลิวินาที

เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

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

บทเรียน “การเข้ารหัส Base64: ทำงานอย่างไร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเข้ารหัส Base64: ทำงานอย่างไร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเข้ารหัส Base64: ทำงานอย่างไร”

ไขปริศนาของ Base64 ซึ่งเป็นรูปแบบการเข้ารหัสที่ใช้ในอีเมล JWT และการส่งข้อมูล คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การเข้ารหัส Base64: ทำงานอย่างไร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเข้ารหัส Base64: ทำงานอย่างไร
  2. ASCII, Unicode และการแทนข้อความ
  3. เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ
  4. การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช
← กลับไปที่ Cryptology Academy