طريقة الاستخدام
- الصق السلسلة الست عشرية في حقل المدخلات. يكون الخيار «من» مضبوطًا مسبقًا على الست عشري، والخيار «إلى» على Base64.
- لا تقلق بشأن التنسيق: تُتجاهل المسافات وفواصل الأسطر والنقطتان والشرطات والبادئتان 0x و\x.
- اختر Base64URL في «إلى» إذا كانت القيمة ستُستخدم في عنوان URL أو JWT أو JSON Web Key.
- انسخ نتيجة 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؟
= واحدة.كيف أنشئ تجزئة لسلامة الموارد الفرعية (SRI)؟
integrity="sha384-..." مع قيمة Base64. ويمكنك باستخدام OpenSSL تنفيذ ذلك بأمر واحد: openssl dgst -sha384 -binary file.js | openssl base64 -A.هل المخرجات بترميز Base64 القياسي أم بالصيغة الآمنة لعناوين URL؟
+ و/، كما تشترط SRI وCSP وترويسات المجموع الاختباري في HTTP. اختر Base64URL ترميزًا للهدف عندما تحتاج إلى مخرجات آمنة لعناوين URL.