ترميز / فك الترميز
رمّز أو فك ترميز Base64 وBase64URL وترميز URL بالنسبة المئوية وكيانات HTML والست عشري أثناء الكتابة، مع دعم كامل لـ UTF-8.
لا يُخزَّن أي شيء تدخله - يُحوَّل ويُعاد في الطلب نفسه.
رمّز أو فك ترميز Base64 وBase64URL وترميز URL بالنسبة المئوية وكيانات HTML والست عشري أثناء الكتابة، مع دعم كامل لـ UTF-8.
لا يُخزَّن أي شيء تدخله - يُحوَّل ويُعاد في الطلب نفسه.
رمز مميز في سجل، أو سلسلة استعلام في إعادة توجيه، أو رسالة بريد مليئة بـ &: النص المرمّز يظهر في كل مكان في العمل. الصقه هنا واختر الصيغة، وشاهد النتيجة المرمّزة أو المفكوكة أثناء الكتابة.
رمز JSON Web Token مكوّن من ثلاثة أجزاء بترميز Base64URL تفصل بينها نقاط: الرأس والحمولة والتوقيع. الصق الجزء الأوسط واختر Base64URL وفك الترميز، فترى حقول JSON مثل معرّف المستخدم ووقت الانتهاء exp (طابع زمني يونكس يمكنك قراءته بمحوّل الطابع الزمني يونكس). فك الترميز ليس تحققًا: أي شخص يستطيع قراءة حمولة JWT، ولا يثبت عدم تغييرها إلا فحص التوقيع على الخادم.
Base64 الذي حُذف حشوه، وهو ما تفعله بعض الأنظمة لتوفير المساحة، يفشل في أدوات فك الترميز الصارمة؛ هذه الأداة تضيف علامات = الناقصة وتخبرك بذلك. كثير من الخوادم تعتبر + في سلسلة الاستعلام مسافة، لذا تصل قيمة Base64 الملصقة في رابط دون ترميز تالفة؛ رمّزها كمكوّن URL أو استخدم Base64URL. النص المرمّز مرتين يظهر بشكل %2520 أو & ويحتاج إلى فك الترميز مرتين.
يتجاهل فك ترميز Base64 المسافات وفواصل الأسطر، لذا تُفك القيمة المقسّمة على عدة أسطر، كما في البريد الإلكتروني، كما لُصقت تمامًا. يقبل Base64URL أيضًا + و/، أما Base64 العادي فيرفض - و_، لذا يحتاج جزء JWT إلى خيار Base64URL. يتخطى فك ترميز hex المسافات والنقطتين والفواصل والشرطات والبادئة 0x، لذا يعمل كل من 48:65:6c:6c:6f و0x48 0x65. يحوّل فك ترميز URL علامة + إلى مسافة، لذا يجب أن تصل علامة الجمع الحقيقية بالشكل %2B. يهرّب ترميز HTML الأحرف الخمسة & < > " و'؛ ويفهم فك ترميز HTML كل الكيانات المسمّاة في HTML5 مثل و…، والكيانات الرقمية مثل ₹ لرمز الروبية.
ترميز URL هنا يرمّز قيمة واحدة، مثل معامل استعلام واحد، لذلك يُهرَّب كل حرف محجوز: https://example.com/a b?x=1&y=2 يصبح https%3A%2F%2Fexample.com%2Fa%20b%3Fx%3D1%26y%3D2. رمّز فقط القيمة التي تضعها داخل الرابط، وليس الرابط كاملا. النص خارج ASCII يُرمَّز ببايتات UTF-8 الخاصة به: café ₹ يصبح caf%C3%A9%20%E2%82%B9، ويعرض الترميز الست عشري البايتات نفسها، é هي c3 a9 و ₹ هي e2 82 b9. ترميز Base64 لـ user:pass هو dXNlcjpwYXNz، وهي القيمة التي تحملها ترويسة HTTP Basic Authorization (RFC 7617)، ولهذا يستطيع أي شخص يرى تلك الترويسة قراءة كلمة المرور.
كانت البايتات بترميز UTF-8 لكنها قُرئت في مكان ما على أنها Latin-1 أو Windows-1252 قبل ترميزها. فك الترميز هنا يعرض البايتات كما هي، والإصلاح مكانه النظام الذي أنتجها.
الصق نصًا حتى 200,000 حرف. في الملفات الثنائية مثل الصور، تُعرض البايتات المفكوكة بالست عشري بدل تحويلها إلى ملف للتنزيل.
لا. يغيّر Base64 طريقة كتابة البايتات فقط لتمر عبر أنظمة تتوقع نصًا عاديًا. يستطيع أي شخص فك ترميزه، فلا تستخدمه أبدًا لإخفاء كلمة مرور أو سر.
يستبدل Base64URL "+" و"/" بـ "-" و"_" ويحذف عادةً حشو "=", فتصبح النتيجة آمنة داخل عناوين URL وأسماء الملفات. تستخدمه رموز JSON Web Token.
لا. يُحوَّل ويُعاد في الطلب نفسه، ولا يُكتب أبدًا في قاعدة بيانات أو سجل.
تهرّب هذه الأداة أيضا الرموز ! ' ( ) و * التي يتركها encodeURIComponent كما هي، لذلك يصبح it's (50%) off! هكذا: it%27s%20%2850%25%29%20off%21. يُفك الشكلان إلى النص نفسه، وتهريب هذه الرموز آمن دائما داخل قيمة استعلام. تصبح المسافة %20 وليس +؛ شكل + يأتي من ترميز نماذج HTML، وأداة الفك هنا تقرأ الشكلين.
على Linux أو Mac، يعطي الأمر echo -n 'Hello, World' | base64 الناتج SGVsbG8sIFdvcmxk، ويعيده الأمر echo 'SGVsbG8sIFdvcmxk' | base64 --decode إلى نص. إذا حذفت -n يضيف echo سطرًا جديدًا يُرمَّز هو أيضًا فيصبح الناتج SGVsbG8sIFdvcmxkCg==، وهذا أكثر سبب شائع لاختلاف أداتين. في PowerShell يرمّز [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Hello, World')) ويفك [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8sIFdvcmxk')) الترميز. هذه الصفحة ترمّز الأحرف التي تلصقها كما هي تمامًا بترميز UTF-8 ولا تضيف سطرًا جديدًا.
الصق الجزء الذي بعد الفاصلة فقط: في data:image/png;base64,iVBORw0KGgo... هو iVBORw0KGgo...، لأن البادئة data:image/png;base64, ليست Base64 وسيُرفض النص كاملًا. اختر Base64 ثم Decode. تظهر البايتات التي ليست نصًا بصيغة hex بدل رسمها صورة، وهذا يكفي لمعرفة نوع الملف: ملف PNG يبدأ بـ 89 50 4e 47، وJPEG بـ ff d8 ff، وملف .docx أو .xlsx أو أي ملف آخر قائم على ZIP كاملًا بـ 50 4b 03 04. لرؤية الصورة نفسها، الصق رابط data URI كاملًا في شريط عنوان المتصفح. الحد الأقصى للإدخال 200,000 حرف، أي نحو 150,000 بايت من الملف.
يكتب Base64 كل 3 بايتات في 4 أحرف ويكمل المجموعة الأخيرة بعلامات = حتى مضاعف للعدد 4 (RFC 4648)، لذا يساوي الناتج 4/3 من بايتات الإدخال مقربًا إلى الأعلى. Hello, World تساوي 12 بايتًا وتصبح 16 حرفًا هي SGVsbG8sIFdvcmxk. العد بالبايتات في UTF-8 لا بالحروف: café أربعة أحرف لكنها 5 بايتات وتصبح Y2Fmw6k=، و₹100 تساوي 6 بايتات وتصبح 4oK5MTAw. ومرفقات البريد الإلكتروني تكبر أكثر قليلًا لأن MIME يقسم Base64 إلى أسطر لا تزيد على 76 حرفًا (RFC 2045)، وهذه الصفحة تتجاهل فواصل الأسطر هذه عند فك الترميز. أما Base64URL بلا حشو فلا يوفر إلا علامات =.