UltKit
รูปภาพ11
PDF13
เอกสารและข้อมูล7
วิดีโอ6
เสียง4
เครื่องมืออื่น ๆ22

เข้ารหัสและถอดรหัส Base64

แปลงข้อความหรือไฟล์เป็น Base64 หรือถอดรหัส Base64 กลับเป็นข้อความที่อ่านได้ รองรับ Unicode อย่างถูกต้อง เปลี่ยนเป็นชุดอักขระแบบ URL-safe ได้ในคลิกเดียว และการถอดรหัสรับได้ทั้งสองชุดอักขระ ไม่ว่าจะมีเครื่องหมายเติมท้าย (padding) หรือไม่

โหมด

0 ตัวอักษร · 0 คำ · 0 บรรทัด

0 ตัวอักษร · 0 คำ · 0 บรรทัด

ทำงานทั้งหมดภายในแท็บเบราว์เซอร์นี้ ข้อความของคุณจะไม่ถูกอัปโหลดหรือจัดเก็บไว้

ชุดอักขระ Base64

ดัชนี → อักขระตาม RFC 4648 สองตัวสุดท้ายที่ไฮไลต์ไว้จะต่างกันในรูปแบบ URL-safe: ลำดับที่ 62 คือ + หรือ - และลำดับที่ 63 คือ / หรือ _

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 63/ _

ผลลัพธ์จะยาวเท่าไร

ข้อมูลเข้าทุก 3 ไบต์จะกลายเป็น 4 อักขระ กลุ่มสุดท้ายที่มี 1 หรือ 2 ไบต์จะเติม = ใน Base64 มาตรฐาน และไม่เติมในรูปแบบ URL-safe

ข้อมูลเข้าไบต์มาตรฐานURL-safeความยาว
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Base64 ทำงานอย่างไร

Base64 ซึ่งกำหนดไว้ใน RFC 4648 เขียนข้อมูลไบต์ใด ๆ ด้วยอักขระ ASCII ที่พิมพ์ได้ 64 ตัว ได้แก่ A–Z, a–z, 0–9, + และ / ทุกกลุ่มละสามไบต์ (24 บิต) จะถูกแบ่งเป็นตัวเลข 6 บิตสี่ตัว และตัวเลขแต่ละตัวจะเลือกอักขระหนึ่งตัวจากชุดอักขระนี้ เมื่อความยาวของข้อมูลนำเข้าไม่ใช่พหุคูณของสาม กลุ่มสุดท้ายจะเติมเครื่องหมาย = หนึ่งหรือสองตัว ผลลัพธ์จะใหญ่กว่าข้อมูลนำเข้าประมาณ 33% เสมอ คือ 4 อักขระต่อทุก 3 ไบต์

สาเหตุที่มี Base64 คือช่องทางจำนวนมากถูกออกแบบมาสำหรับข้อความ อีเมล (MIME), data: URL ใน HTML และ CSS, ฟิลด์ JSON ที่ส่งรูปภาพหรือใบรับรอง และส่วนหัว HTTP Basic authentication ล้วนใช้ Base64 เพื่อส่งข้อมูลไบนารีอย่างปลอดภัย Base64 ไม่ใช่การเข้ารหัสลับและไม่ได้ซ่อนอะไรไว้ การถอดรหัสไม่ต้องใช้กุญแจ

Unicode และรูปแบบ URL-safe

Base64 เข้ารหัสไบต์ ไม่ใช่ตัวอักษร ข้อความจึงต้องถูกแปลงเป็นไบต์ก่อน เครื่องมือนี้ใช้ UTF-8 เสมอ ซึ่งเป็นการเข้ารหัสที่เว็บใช้งานอยู่ โดย é กลายเป็นสองไบต์ และอีโมจิเป็นสี่ไบต์ ฟังก์ชัน btoa ที่มีในเบราว์เซอร์เพียงอย่างเดียวจะเกิดข้อผิดพลาดกับอักขระที่เกิน U+00FF จึงทำให้ตัวเข้ารหัสแบบง่าย ๆ ใช้ไม่ได้กับตัวอักษรที่มีเครื่องหมายและอีโมจิ ที่นี่ข้อความจะผ่าน TextEncoder ก่อน และการถอดรหัสจะย้อนกลับด้วย TextDecoder หากไบต์ที่ถอดรหัสได้ไม่ใช่ UTF-8 ที่ถูกต้อง (เช่น รูปภาพหรือไฟล์ zip) เครื่องมือจะแสดงเป็นเลขฐานสิบหกแทนข้อความที่อ่านไม่ออก

Base64 มาตรฐานใช้ + และ / ซึ่งมีความหมายพิเศษใน URL และชื่อไฟล์ ชุดอักขระแบบ URL-safe จากส่วนที่ 5 ของ RFC 4648 จึงแทนที่ด้วย - และ _ และมักตัดการเติม = ออก JSON Web Token ใช้รูปแบบนี้ ตัวถอดรหัสรองรับทั้งสองแบบและรองรับกรณีที่ไม่มีการเติม = คุณจึงวางแบบใดก็ได้

การเข้ารหัสไฟล์และรูปภาพ

เลือกไฟล์แล้วเครื่องมือจะอ่านไฟล์ในเครื่องด้วย FileReader และส่งคืนเป็น Base64 หรือ data: URL ที่สมบูรณ์พร้อมชนิด MIME ของไฟล์ ซึ่งนำไปวางในแท็ก img หรือพื้นหลัง CSS ได้ทันที รูปภาพแบบอินไลน์ช่วยลดการร้องขอ HTTP หนึ่งครั้ง แต่ขนาดจะใหญ่ขึ้นหนึ่งในสามและแคชแยกต่างหากไม่ได้ จึงเหมาะกับไอคอนขนาดเล็กมากกว่ารูปถ่าย หากต้องการแปลงรูปภาพพร้อมตัวอย่างและโค้ด HTML และ CSS สำเร็จรูป ให้ใช้ แปลงรูปเป็น Base64

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

ทำไมผลลัพธ์ Base64 จึงยาวกว่าข้อมูลต้นฉบับ
ทุก 3 ไบต์จะกลายเป็น 4 อักขระ ผลลัพธ์จึงมีขนาดประมาณ 4/3 ของข้อมูลนำเข้า บวกอักขระเติมได้สูงสุดสองตัว ข้อความที่ไม่ใช่ ASCII จะยาวกว่านั้นอีก เพราะ UTF-8 ใช้สองถึงสี่ไบต์ต่ออักขระ
เครื่องหมาย = ที่ท้ายข้อความคืออะไร
คือการเติมอักขระ ซึ่งทำให้ความยาวผลลัพธ์เป็นพหุคูณของสี่ เมื่อความยาวข้อมูลนำเข้าไม่ใช่พหุคูณของสาม เครื่องหมาย = หนึ่งตัวหมายถึงกลุ่มสุดท้ายมีสองไบต์ และ = สองตัวหมายถึงมีหนึ่งไบต์
ทำไมถอดรหัสไม่สำเร็จและขึ้นข้อผิดพลาดว่ามีอักขระไม่ถูกต้อง
ข้อมูลนำเข้ามีอักขระที่อยู่นอกชุดอักขระ เช่น ช่องว่างกลางคำ เครื่องหมายอัญประกาศ หรือ % จากการเข้ารหัส URL ระบบยอมรับการขึ้นบรรทัดใหม่และการไม่มี = เติมท้าย แต่ไม่ยอมรับอักขระอื่น
เข้ารหัสรหัสผ่านด้วย Base64 ปลอดภัยหรือไม่
Base64 ไม่มีการป้องกันใด ๆ HTTP Basic authentication ส่ง user:password เป็น Base64 จึงต้องใช้ผ่าน HTTPS เท่านั้น หากต้องการปกป้องข้อมูลลับ ให้ใช้การเข้ารหัสลับหรือการแฮชจริง ๆ
Base64 กับ Base64url ต่างกันอย่างไร
ต่างกันเพียงสองอักขระและการเติม = โดย Base64url ใช้ - และ _ แทน + และ / และมักไม่ใส่ = ผลลัพธ์จึงอยู่ใน URL และชื่อไฟล์ได้โดยไม่ต้องเอสเคป