النص العربي غالبًا ما يحتوي على علامات التشكيل (الفتحة والضمة والكسرة وغيرها) كرموز تركيبية منفصلة (combining marks) يمكن إدراجها بترتيب أو تمثيل Unicode مختلف مع بقاء الشكل المرئي متطابقًا تمامًا. هذا يعني أن نصين يبدوان متطابقين تمامًا على الشاشة قد ينتجان تجزئتين (hash) مختلفتين تمامًا إذا اختلف تمثيل Unicode الداخلي — وهي مفاجأة شائعة عند حساب هاش لنص عربي منسوخ من مصادر مختلفة.
لماذا يهم تطبيع Unicode قبل التجزئة
لحل هذه المشكلة توجد صيغ تطبيع (normalization forms) قياسية مثل NFC وNFD، تعيد كتابة النص بطريقة موحّدة قبل أي معالجة. عند العمل مع نصوص عربية من مصادر متعددة (نسخ من موقع، من تطبيق، من ملف Word)، يُنصح بتطبيق التطبيع أولًا إذا كان الهدف مقارنة أو تجزئة النص، وإلا فقد يُعتبر نفس النص "مختلفًا" فقط بسبب اختلاف الترميز الداخلي.
لماذا تُعتبر MD5 وSHA-1 غير آمنتين
وُجدت لكلا الخوارزميتين طرق عملية لإنشاء مجموعتي بيانات مختلفتين بنفس التجزئة — يُسمى ذلك تصادمًا. هذا يجعلهما غير مناسبتين حيث تهم القوة التشفيرية، رغم أنهما لا تزالان تُستخدمان حيث يلزم فقط تحقق سريع من السلامة.
SHA-256 وعائلة SHA-2
تولّد SHA-256 تجزئة بطول 256 بت وحتى اليوم لا توجد لها تصادمات عملية معروفة. تُستخدم في سلاسل الكتل، وشهادات TLS، والتحقق من سلامة البرمجيات.
لماذا نحتاج هذا
- التحقق من سلامة الملفات المنزَّلة بمقارنتها بتجزئة منشورة.
- فهم لماذا قد يعطي نفس النص العربي المنسوخ من مصدرين مختلفين تجزئتين مختلفتين.
- إنشاء بصمات قصيرة وفريدة لكميات كبيرة من البيانات.
لماذا لم تحلّ SHA-3 محل SHA-2
اختير SHA-3 فائزًا في مسابقة منفصلة نظّمها NIST تحسّبًا لاحتمال اكتشاف ثغرة جوهرية في SHA-2 يومًا ما — إنه «تأمين» قائم على بنية داخلية مختلفة جذريًا (Keccak). وبما أنه لم تُكتشف بعد أي هجمات عملية على SHA-2، تبقى SHA-256 المعيار الافتراضي في معظم الأنظمة.