مولّد Hash (SHA)
يحسب ملخصات SHA-1 وSHA-256 وSHA-384 وSHA-512 التشفيرية للنص الذي تُدخله. يستخدم Web Crypto API في المتصفح؛ ولا يُرسَل النص إلى الخادم.
آخر تحديث:
الملخصات
أدخل نصًا أعلاه؛ تظهر الملخصات فورًا.
- SHA-256
- b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
- SHA-512
- 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
- SHA-384
- fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
- SHA-1
- 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
متى يفيدك هذا المولّد
عند التحقق من ملف نزّلته
قيمة SHA-256 المنشورة في موقع المصدر هي دليلك الوحيد على أن الملف لم يتبدّل في الطريق. حساب ملخص ما نزّلته ومقارنته بالمنشور عادة لا تستغرق دقيقة، وتكشف العبث قبل التثبيت لا بعده.
عند مقارنة محتوى بين خادمين
بدل نقل الملف كاملًا للمقارنة، انقل ملخصه فقط. إن تطابق الملخصان تطابقت البايتات؛ وإن اختلفا فقد حسمت الجواب بأربعة وستين محرفًا بدل ميغابايتات.
عند إثبات أن مستندًا لم يتغيّر
أرشفة ملخص المستند وقت استلامه تتيح لاحقًا إثبات أن النسخة الحالية هي الأصل بعينه. أي تعديل، ولو بمحرف واحد، يغيّر الملخص كله.
مثال محسوب: أربعة أحرف عربية تحت المجهر
جرّب بنفسك في الحقل أعلاه لترى كيف يتعامل الملخص مع النص العربي.
- اكتب سلام: يُظهر العدّاد 8 بايتات، لأن كل حرف عربي يشغل بايتين في ترميز UTF-8.
- ملخص SHA-256 لهذا النص يبدأ بـ bda1fa48.
- أضف نقطة واحدة في النهاية: بايت واحد زائد يقلب الملخص كله.
- الطول لا يتغيّر أبدًا: 64 خانة ست عشرية سواء أدخلت حرفًا أو كتابًا.
- أعد كتابة سلام كما كانت، فيعود الملخص الأول حرفًا بحرف: الدالة حتمية.
الدالة ترى بايتات لا حروفًا، والترميز جزء من الهوية: النص العربي نفسه محفوظًا بترميز آخر غير UTF-8 يعطي ملخصًا مختلفًا تمامًا. عند مقارنة ملخصات بين نظامين، وحّد الترميز أولًا؛ وإلا فستطارد اختلافًا لا وجود له في المحتوى نفسه.
أربعة أخطاء متكررة
تجزئة نص عربي قبل تطبيعه
«مُحمّد» و«محمد» تبدوان الشيء نفسه للقارئ، لكن التشكيل يزيد بايتات فيتبدّل الملخص. والأمر نفسه في همزة أ مقابل ا، وفي التاء المربوطة مقابل الهاء، وفي التطويل ـ الذي يُدرَج للزينة. إن كنت تقارن أسماءً أو عناوين عربية بالملخص، فطبّع النص أولًا وفق قاعدة مكتوبة، ثم جزّئه.
مقارنة ملخصين بحالتَي أحرف مختلفتين
بعض الأدوات تطبع الست عشري بأحرف كبيرة وبعضها بصغيرة، والقيمة واحدة في الحالتين. مقارنة نصية مباشرة بينهما تفشل وتوحي بأن الملفين مختلفان. وحّد الحالة قبل المقارنة، أو قارن البايتات لا النص.
تحميل الملف كله في الذاكرة لتجزئته
قراءة ملف بحجم غيغابايت دفعةً واحدة لحساب ملخصه تُسقط الخدمة قبل أن تعطيك الجواب. دوال الـ hash تعمل على دفعات بطبيعتها، فمرّر تدفّقًا بدل مصفوفة بايتات كاملة؛ في .NET مثلًا HashData يقبل Stream.
الاكتفاء بالملخص لإثبات المصدر
الملخص يثبت أن البايتات لم تتبدّل، لا أن الجهة التي أرسلتها هي من تدّعيها. فمن يستطيع تبديل الملف يستطيع نشر ملخصه الجديد إلى جانبه. لإثبات المصدر يلزم توقيع بمفتاح، أو قناة موثوقة منفصلة تصل منها القيمة المنشورة.
أدوات تُستعمل إلى جانبها
- مولّد UUID ولّد UUID v4 آمنًا تشفيريًا وv7 المرتّب زمنيًا. توليد دفعي وخيارات تنسيق.
- مُرمّز/مُفكّك Base64 رمّز النص إلى Base64 أو فُكّ ترميزه. متغيّر قياسي وآمن للروابط (base64url)؛ متوافق مع UTF-8، في المتصفح.
- مُرمّز/مُفكّك HTML / Entity رمّز النص إلى كيانات HTML أو فُكّ ترميزه. اهرب المحارف الخاصة لمنع XSS؛ في المتصفح، دون تسجيل.
- عارض HTML الصق شيفرة HTML وعايِنها حيًّا فورًا. في إطار معزول وآمن (sandbox)؛ والـ scripts معطّلة للأمان.
- محلّل JWT حلّل قسمَي الترويسة والحمولة في JSON Web Token، وشاهد المطالبات القياسية ومدة الصلاحية. لا يغادر الـ token المتصفح.
الأسئلة الشائعة
ما الفرق بين SHA-256 وSHA-512؟
كلاهما من عائلة SHA-2. ينتج SHA-256 ملخصًا من 256 بت (64 محرفًا ست عشريًا)، وينتج SHA-512 ملخصًا من 512 بت (128 محرفًا). وعادةً يكون SHA-512 أسرع على المعماريات 64 بت، بينما SHA-256 هو الافتراضي الشائع بمخرَجه الأقصر.
لماذا لا تولّد هذه الأداة MD5؟
MD5 وSHA-1 مكسوران أمام هجمات التصادم؛ ولا يُنصَح باستخدامهما لأغراض أمنية. تستخدم هذه الأداة الخوارزميات التي تدعمها Web Crypto API الأصلية في المتصفح — وMD5 غير موجود فيها عمدًا. وأُبقي SHA-1 للمقارنة مع الأنظمة القديمة فقط.
هل أستخدم الـ hash لتخزين كلمات المرور؟
لا. SHA سريع — وهذا ضعف بالنسبة لكلمات المرور؛ إذ يمكن للمهاجم تجربة مليارات المحاولات في الثانية. لكلمات المرور استخدم خوارزمية بطيئة ومملّحة عمدًا: bcrypt أو scrypt أو Argon2. وفي .NET يصلح PBKDF2 (Rfc2898DeriveBytes) أيضًا.
هل يُنتج الإدخال نفسه دائمًا الـ hash نفسه؟
نعم. دوال الـ hash التشفيرية حتمية: تعطي سلسلة البايتات نفسها الملخص نفسه دائمًا. وحتى تغيير بت واحد يُنتج ملخصًا مختلفًا تمامًا بتأثير الانهيار. لذلك تُستخدَم الـ hash للتحقق من السلامة.
كيف أحسب SHA-256 في .NET؟
تعطي System.Security.Cryptography.SHA256.HashData(byte[]) الملخص في سطر واحد. وللتدفّق تُستخدَم SHA256.Create() وComputeHash. المخرَج مصفوفة بايتات؛ وتُحوَّل إلى نص ست عشري بـ Convert.ToHexString.