UltKit

ترميز وفك ترميز Base64

حوّل النص أو الملف إلى Base64، أو فك ترميز Base64 لاستعادة النص المقروء. تُعالَج أحرف Unicode بشكل صحيح، والأبجدية الآمنة للروابط على بُعد نقرة واحدة، ويقبل فك الترميز أيًّا من الأبجديتين مع الحشو أو بدونه.

الوضع

0 حرف · 0 كلمة · 0 سطر

0 حرف · 0 كلمة · 0 سطر

تعمل الأداة بالكامل داخل تبويب المتصفح هذا. لا يتم رفع نصك ولا حفظه.

أبجدية Base64

الفهرس ← الحرف وفق RFC 4648. يختلف المحرفان الأخيران المميزان في النسخة الآمنة لعناوين URL: 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 أحرف؛ وتُحشى المجموعة الأخيرة من بايت أو بايتين بالرمز = في Base64 القياسي، وتُترك دون حشو في الصيغة الآمنة لعناوين URL.

الإدخالالبايتاتقياسيآمن لعناوين URLالطول
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

ما الذي يفعله Base64

يكتب Base64، المعرَّف في RFC 4648، أي بايتات باستخدام 64 حرفًا قابلًا للطباعة من ASCII: A–Z وa–z و0–9 والرمزين + و/. تُقسَّم كل مجموعة من ثلاثة بايتات (24 بتًا) إلى أربعة أرقام من 6 بتات، ويختار كل رقم حرفًا واحدًا من هذه الأبجدية. وإذا لم يكن طول المدخلات من مضاعفات الثلاثة، تُحشى المجموعة الأخيرة بعلامة = أو علامتين. تكون النتيجة دائمًا أكبر من المدخلات بنحو 33%: أربعة أحرف لكل ثلاثة بايتات.

وُجد هذا الترميز لأن كثيرًا من القنوات بُنيت للنصوص. فالبريد الإلكتروني (MIME) وروابط data: في HTML وCSS وحقول JSON التي تحمل صورًا أو شهادات ورؤوس مصادقة HTTP Basic تستخدم كلها Base64 لنقل البيانات الثنائية بأمان. وهو ليس تشفيرًا ولا يخفي شيئًا؛ ففك الترميز لا يحتاج إلى مفتاح.

Unicode والصيغة الآمنة للروابط

يرمّز Base64 البايتات لا الحروف، لذا يجب تحويل النص إلى بايتات أولًا. تستخدم هذه الأداة دائمًا UTF-8، الترميز الذي يقوم عليه الويب: يصبح الحرف é بايتين والإيموجي أربعة بايتات. أما الدالة btoa المضمّنة في المتصفح وحدها فتُصدر خطأً مع أي حرف يتجاوز U+00FF، ولهذا تفشل المرمّزات البسيطة مع الحروف المشكّلة والإيموجي؛ هنا يمر النص أولًا عبر TextEncoder، ويعكس فك الترميز العملية باستخدام TextDecoder. وإذا لم تكن البايتات الناتجة عن فك الترميز UTF-8 صالحًا (صورة أو ملف zip)، تعرضها الأداة بالنظام السداسي عشري بدل نص مشوّه.

يستخدم Base64 القياسي الرمزين + و/، ولهما معنى في الروابط وأسماء الملفات. تستبدل الأبجدية الآمنة للروابط من القسم 5 في RFC 4648 بهما الرمزين - و_، وغالبًا ما يُحذف الحشو. وتستخدم رموز JSON Web Tokens هذه الصيغة تمامًا. يقبل فك الترميز الأبجديتين والحشو الناقص، فيمكنك لصق أيٍّ منهما.

ترميز الملفات والصور

اختر ملفًا لتقرأه الأداة محليًا بواسطة FileReader وتعيد لك ترميز Base64 الخاص به، أو رابط data: كاملًا بنوع MIME للملف جاهزًا للصق في وسم img أو خلفية CSS. توفّر الصور المضمّنة طلب HTTP واحدًا لكنها تكبر بمقدار الثلث ولا يمكن تخزينها مؤقتًا بشكل منفصل، لذا تناسب الأيقونات الصغيرة لا الصور الفوتوغرافية. وللصور مع معاينة ومقتطفات HTML وCSS جاهزة، استخدم تحويل الصورة إلى Base64.

الأسئلة الشائعة

لماذا يكون ناتج Base64 أطول من المدخل؟
كل 3 بايتات تصبح 4 أحرف، فيبلغ الناتج نحو 4/3 حجم المدخلات، إضافةً إلى حرفي حشو كحد أقصى. ويكون النص غير ASCII أطول، لأن UTF-8 يستخدم من بايتين إلى أربعة بايتات لكل حرف.
ما علامات = في النهاية؟
الحشو. تجعل علامات = طول الناتج من مضاعفات الأربعة عندما لا يكون طول المدخلات من مضاعفات الثلاثة. علامة = واحدة تعني أن المجموعة الأخيرة كانت بايتين، وعلامتان تعنيان أنها كانت بايتًا واحدًا.
لماذا يفشل فك الترميز مع خطأ حرف غير صالح؟
تحتوي المدخلات على شيء خارج الأبجدية، مثل مسافة داخل كلمة أو علامة اقتباس أو % من ترميز الروابط. يُتسامح مع فواصل الأسطر والحشو الناقص، أما الأحرف الأخرى فلا.
هل ترميز كلمة المرور بـ Base64 آمن؟
لا يوفر Base64 أي حماية. تُرسل مصادقة HTTP Basic القيمة user:password بترميز Base64، ولهذا يجب استخدامها عبر HTTPS فقط. استخدم تشفيرًا أو تجزئةً حقيقيين لحماية الأسرار.
ما الفرق بين Base64 و Base64url؟
حرفان فقط والحشو: يستخدم Base64url الرمزين - و_ بدل + و/ ويحذف = غالبًا، فيمكن وضع الناتج في الروابط وأسماء الملفات دون ترميز هروب.