محوّل الست عشري إلى Base64

الصق بايتات ست عشرية لتحصل على البيانات نفسها بترميز Base64. تُزال الفواصل مثل المسافات والنقطتين والبادئة 0x تلقائيًا، لذا يمكنك لصق قيم التجزئة والبصمات كما هي.

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. الصق السلسلة الست عشرية في حقل المدخلات. يكون الخيار «من» مضبوطًا مسبقًا على الست عشري، والخيار «إلى» على Base64.
  2. لا تقلق بشأن التنسيق: تُتجاهل المسافات وفواصل الأسطر والنقطتان والشرطات والبادئتان 0x و\x.
  3. اختر Base64URL في «إلى» إذا كانت القيمة ستُستخدم في عنوان URL أو JWT أو JSON Web Key.
  4. انسخ نتيجة Base64.

لماذا تحوّل الست عشري إلى Base64

تطبع معظم أدوات التجزئة الملخصات بالنظام الست عشري، لكن بروتوكولات كثيرة تتوقع Base64، وهو أقصر بمقدار الثلث. ومن الحالات الشائعة:

  • سلامة الموارد الفرعية (SRI). تحمل السمة integrity في وسوم السكربتات وأوراق الأنماط ملخصًا بترميز Base64، مثل sha384- متبوعة بـ 64 حرفًا من أحرف Base64.
  • سياسة أمان المحتوى (CSP). تُكتب التجزئات التي تسمح بالسكربتات المضمّنة بالشكل 'sha256-...' مع قيمة بترميز Base64.
  • المجاميع الاختبارية في واجهات HTTP البرمجية. تحمل الترويسة Content-MD5 وترويسات المجموع الاختباري في Amazon S3 تمثيل Base64 للملخص الثنائي، لا السلسلة الست عشرية التي يطبعها md5sum.
  • معرّفات مختصرة. يتكون UUID من 16 بايتًا: 32 رقمًا ست عشريًا، لكنه لا يتجاوز 22 حرفًا بترميز Base64URL بلا حشو.

الصيغ الست عشرية المقبولة

الأرقام الست عشرية غير حساسة لحالة الأحرف. وقبل فك الترميز، يزيل المحوّل المسافات البيضاء وفواصل الأسطر والنقطتين والفواصل المنقوطة والفواصل والشرطات، إضافة إلى البادئات 0x و\x و% و&#x. ويشمل ذلك بصمات OpenSSL مثل AB:CD:EF، ومصفوفات لغة C مثل 0x12, 0x34، والسلاسل المهرّبة مثل \x12\x34، والبايتات المرمّزة بالنسبة المئوية، ومعرّفات UUID التي تحتوي على شرطات.

بعد التنظيف، يجب أن تحتوي المدخلات على عدد زوجي من الأرقام، رقمين لكل بايت. ويُبلَّغ عن العدد الفردي بوصفه خطأً، وغالبًا ما يعني ذلك ضياع صفر بادئ، كأن تكتب abc وأنت تقصد 0abc.

رمّز البايتات لا النص الست عشري

من الأخطاء الشائعة لصق ملخص ست عشري في أداة عادية لترميز النص إلى Base64. فهذا يرمّز الأحرف 0-9a-f بدلًا من البايتات التي تمثلها، وتأتي النتيجة بضعف الطول الصحيح: 88 حرفًا لملخص SHA-256 بدلًا من 44. وأي جهة تتوقع الملخص الثنائي، مثل سمة SRI أو ترويسة المجموع الاختباري، سترفض هذه القيمة. أما هذا المحوّل فيفك ترميز القيمة الست عشرية إلى بايتات أولًا.

# سطر الأوامر: من ملخص ست عشري إلى Base64
printf '%s' "$HEX" | xxd -r -p | base64

# قيمة SRI لملف بخطوة واحدة
openssl dgst -sha384 -binary script.js | openssl base64 -A

# Python
base64.b64encode(bytes.fromhex(h)).decode()

// Node.js (يتوقف بصمت عند أول حرف غير ست عشري)
Buffer.from(h, 'hex').toString('base64')

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

لماذا يظهر خطأ عند إدخال سلسلتي الست عشرية؟

إما أن المدخلات تحتوي على حرف ليس رقمًا ست عشريًا، كالحرف O بدلًا من الصفر، وإما أن عدد الأرقام فردي. تعرض رسالة الخطأ موضع الحرف غير الصالح؛ أما في حالة الطول الفردي، فتحقق مما إذا كان الصفر البادئ مفقودًا.

كم سيبلغ طول مخرجات Base64؟
اقسم عدد الأرقام الست عشرية على 2 لتحصل على عدد البايتات، ثم احسب 4 أحرف لكل 3 بايتات مع التقريب إلى الأعلى. فملخص SHA-256 المؤلف من 64 رقمًا ست عشريًا يصبح 44 حرفًا بترميز Base64، منها علامة = واحدة.
كيف أنشئ تجزئة لسلامة الموارد الفرعية (SRI)؟
احسب ملخص SHA-384 للملف، ثم حوّل الملخص الست عشري هنا، واكتب integrity="sha384-..." مع قيمة Base64. ويمكنك باستخدام OpenSSL تنفيذ ذلك بأمر واحد: openssl dgst -sha384 -binary file.js | openssl base64 -A.
هل المخرجات بترميز Base64 القياسي أم بالصيغة الآمنة لعناوين URL؟
Base64 القياسي بالرمزين + و/، كما تشترط SRI وCSP وترويسات المجموع الاختباري في HTTP. اختر Base64URL ترميزًا للهدف عندما تحتاج إلى مخرجات آمنة لعناوين URL.