ترميز وفك ترميز Base64
حوّل النص أو الملف إلى Base64، أو فك ترميز Base64 لاستعادة النص المقروء. تُعالَج أحرف Unicode بشكل صحيح، والأبجدية الآمنة للروابط على بُعد نقرة واحدة، ويقبل فك الترميز أيًّا من الأبجديتين مع الحشو أو بدونه.
0 حرف · 0 كلمة · 0 سطر
0 حرف · 0 كلمة · 0 سطر
تعمل الأداة بالكامل داخل تبويب المتصفح هذا. لا يتم رفع نصك ولا حفظه.
أبجدية Base64
الفهرس ← الحرف وفق RFC 4648. يختلف المحرفان الأخيران المميزان في النسخة الآمنة لعناوين URL: 62 هو + أو -، و63 هو / أو _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
كم يصبح طول المخرجات
كل 3 بايتات من الإدخال تصبح 4 أحرف؛ وتُحشى المجموعة الأخيرة من بايت أو بايتين بالرمز = في Base64 القياسي، وتُترك دون حشو في الصيغة الآمنة لعناوين URL.
| الإدخال | البايتات | قياسي | آمن لعناوين URL | الطول |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
ما الذي يفعله 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 الرمزين - و_ بدل + و/ ويحذف = غالبًا، فيمكن وضع الناتج في الروابط وأسماء الملفات دون ترميز هروب.