مولّد التجزئة
قيم تجزئة MD5 وSHA-1 وSHA-256 وSHA-512 لأي نص، تُحسب مباشرةً في متصفحك باستخدام واجهة Web Crypto. لا يُرسل أي شيء تكتبه إلى أي مكان.
أيّها يجب أن أستخدم؟
يعتمد على الغرض من حساب التجزئة.
خوارزمية SHA-256 هي الخيار الآمن الافتراضي لعمليات التحقق من السلامة ومجاميع التحقق. أما MD5 وSHA-1 فمكسورتان تشفيريًا (يمكن إنشاء تصادمات عمليًا)، وتصلحان للتحقق من أن ملفًا لم يتلف أثناء النقل، لكن لا تصلحان لأي شيء حسّاس أمنيًا مثل تخزين كلمات المرور.
لا تصلح لكلمات المرور
لا ينبغي استخدام أي من هذه الخوارزميات لتخزين كلمات المرور؛ فهي سريعة عمدًا، وهو ما يتعارض تمامًا مع متطلبات تلك المهمة. يحتاج تخزين كلمات المرور إلى خوارزمية بطيئة مصمّمة خصيصًا لذلك، مثل bcrypt أو scrypt أو Argon2.
كيف يعمل
تُحسب SHA-1 وSHA-256 وSHA-512 عبر واجهة crypto.subtle.digest المدمجة في متصفحك: يُحوَّل نصك إلى بايتات UTF-8 باستخدام TextEncoder، ثم تُحسب التجزئة بشكل أصلي، وتُنسَّق النتيجة كسداسي عشري بأحرف صغيرة. أما MD5 فهي الاستثناء: ترفض Web Crypto عمدًا تنفيذها (لأنها مكسورة تشفيريًا)، لذا تتضمن هذه الأداة تنفيذًا صغيرًا بلغة JavaScript لمعيار RFC 1321 خاصًا بـ MD5 فقط. تُعاد حسابات الخوارزميات الأربع مع كل ضغطة مفتاح، مع حماية تتجاهل النتائج القديمة إذا كتبت أسرع من انتهاء الحسابات.
مشكلة عملية شائعة عند المقارنة مع الطرفية: تحسب هذه الأداة تجزئة البايتات التي كتبتها بالضبط، دون سطر جديد في النهاية. لن يتطابق أمر echo "hello" | sha256sum أبدًا، لأن echo يضيف سطرًا جديدًا وأنت فعليًا تحسب تجزئة "hello\n". استخدم بدلاً من ذلك printf '%s' "hello" | sha256sum لتتطابق القيم تمامًا. هذا الفخ نفسه يفسّر معظم حالات "لماذا لا تتطابق تجزئتي" بين اللغات والأدوات.
بما أن crypto.subtle يعمل داخل المتصفح، فلا حاجة لإرسال أي شيء إلى أي مكان لحساب التجزئة. يمكنك التحقق بنفسك: افتح تبويب الشبكة في أدوات المطوّر واكتب كلمة مرور أو مفتاح API في الحقل. لن يظهر أي طلب، ويبقى نصك داخل التبويب.