طريقة الاستخدام
- اكتب النص أو الصقه، أو غيّر «صيغة المدخلات» إلى «ست عشري» لإدخال بايتات، أو افتح الملف الذي تريد التحقق منه عبر «فتح ملف».
- أبقِ SHA-256 محددة، واختر في «صيغة المخرجات» «ست عشري (أحرف صغيرة)» أو «ست عشري (أحرف كبيرة)» أو «Base64».
- الصق المجموع الاختباري المنشور في صفحة التنزيل في حقل «المقارنة مع». وتعني «متطابقة» أن الملف مطابق تمامًا.
- انسخ النتيجة، أو انسخ SHA-384 أو SHA-512 أو أي ملخص آخر من جدول «جميع الخوارزميات».
ما هي خوارزمية SHA-256؟
SHA-256 هي العضو الأوسع استخدامًا في عائلة SHA-2، وقد صمّمتها وكالة الأمن القومي الأمريكية (NSA) واعتمدها NIST معيارًا عام 2002 في FIPS 180-2. وهي اليوم محددة في FIPS 180-4، ويقدّم RFC 6234 الخوارزميات نفسها مع شيفرة مرجعية. تعالج SHA-256 كتلًا من 512 بت في 64 جولة من العمليات الحسابية على 32 بت، وتُخرج ملخصًا بطول 256 بت: 64 حرفًا ست عشريًا أو 44 حرفًا بترميز Base64. ولا يُعرف أي هجوم عملي لإيجاد تصادم أو صورة أولية (preimage)، وهي الخيار الافتراضي في:
- شهادات TLS وعمليات المصافحة، وتوقيع الشيفرة البرمجية؛
- Bitcoin، الذي يطبّق SHA-256 مرتين لحساب تجزئات الكتل وإثبات العمل ومعرّفات المعاملات (ويأتي المجموع الاختباري في عناوين Base58Check من التجزئة المزدوجة نفسها)؛
- ملفات المجاميع الاختبارية مثل
SHA256SUMS، وملخصات صور الحاويات (sha256:...)، وSubresource Integrity.
التحقق من ملف تم تنزيله
افتح الملف الذي نزّلته والصق المجموع الاختباري الذي نشره الناشر في حقل «المقارنة مع». لا يهم إن كانت الأحرف كبيرة أو صغيرة، وتصلح القيمة بترميز Base64 أيضًا. وتعني «متطابقة» أن الملف هو بايتًا ببايت الملف نفسه الذي حُسب منه المجموع الاختباري. لكن ذلك لا يثبت هوية من أنشأه، لذا خذ المجموع الاختباري من موقع الناشر عبر HTTPS أو من ملف SHA256SUMS موقّع، لا من الخادم المرآة الذي نزّلت منه الملف.
أما في النصوص، فالتجزئة تُحسب على البايتات لا على الأحرف. فكلٌّ من نهايات أسطر Windows (CRLF)، أو علامة ترتيب البايتات (BOM)، أو استخدام UTF-16 بدلًا من UTF-8 يُنتج قيمة SHA-256 مختلفة تمامًا. استخدم قائمة «ترميز النص» أو المدخلات الست عشرية لحساب تجزئة البايتات نفسها تمامًا التي حسب نظام آخر تجزئتها.
هجوم تمديد الطول وكلمات المرور
مثل MD5 وSHA-1 وSHA-512، فإن SHA-256 عرضة لهجوم تمديد الطول (length extension): فإذا عرف المهاجم قيمة SHA-256(secret + message) وطول السر، أمكنه حساب تجزئة صالحة لتلك الرسالة متبوعةً بالحشو وببيانات من اختياره، دون أن يعرف السر. ولتوقيع البيانات أو مصادقتها بمفتاح، استخدم HMAC-SHA256 من مولّد HMAC بدلًا من حساب تجزئة المفتاح والرسالة معًا.
والسرعة أيضًا هي ما يجعل SHA-256 العادية طريقة خاطئة لتخزين كلمات المرور: فكل من يحصل على قيم التجزئة يستطيع اختبار التخمينات بالسرعة التي تحسب بها بطاقاته الرسومية SHA-256، كما أن كلمات المرور المتطابقة تُنتج تجزئات متطابقة. استخدم Argon2id أو scrypt أو bcrypt أو PBKDF2-HMAC-SHA256 مع عدد تكرارات مرتفع، وكلها تضيف ملحًا (salt).
SHA-256 في سطر الأوامر وفي الشيفرة البرمجية
$ printf 'abc' | sha256sum
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad -
sha256sum -c SHA256SUMS # Linux: التحقق من قائمة ملفات
shasum -a 256 file.iso # macOS
certutil -hashfile file.iso SHA256 # Windows
Get-FileHash file.iso # PowerShell (الخوارزمية الافتراضية هي SHA256)
# Python
hashlib.sha256(data).hexdigest()
// Node.js
crypto.createHash('sha256').update(data).digest('hex')
القيمة الخاصة بـ abc هي متجه الاختبار الوارد في المعيار؛ اكتب abc في الأعلى لترى النتيجة نفسها. ويعرض جدول «جميع الخوارزميات» أيضًا قيم SHA-384 وSHA-512 وSHA-1 وMD5 وCRC لمدخلاتك.
أمثلة
| المدخلات (UTF-8) | SHA-256 |
|---|---|
Hello, World! | dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f |
Base64.is | 63f2f446bc11a1f96175c0f77bdac08ca1b184ba42c3a42c34ddcbce00b1b800 |
你好 | 670d9743542cae3ea7ebe36af56bd53648b0a1126162e78d81a32934a711302e |
الأسئلة الشائعة
هل يمكن فك تشفير SHA-256؟
لا. SHA-256 دالة تجزئة أحادية الاتجاه، وليست تشفيرًا. ولا تفعل أدوات «فك التشفير» على الإنترنت سوى البحث عن قيم التجزئة في جداول لمدخلات معروفة، لذا تجد كلمات المرور الشائعة والسلاسل القصيرة، لكنها لا تجد شيئًا طويلًا أو عشوائيًا.
لماذا لا تطابق قيمة SHA-256 لديّ المجموع الاختباري المنشور؟
في أغلب الأحيان يكون التنزيل غير مكتمل أو لإصدار مختلف، أو تكون قد حسبت تجزئة اسم الملف بدلًا من الملف نفسه. حمّل الملف نفسه عبر «فتح ملف». وتحقّق أيضًا من أن القيمتين تستخدمان الخوارزمية نفسها: فالقيمة الست عشرية المؤلفة من 128 حرفًا تأتي من تجزئة بطول 512 بت مثل SHA-512، لا من SHA-256.
كيف أحصل على تجزئة SHA-256 بترميز Base64؟
sha256-، وإن كانت قيم sha384- أكثر شيوعًا) وترويسة HTTP Content-Digest. ويحمل كلٌّ من الست عشري وBase64 البايتات الـ 32 نفسها؛ ويمكنك التحويل بينهما باستخدام تحويل Base64 إلى ست عشري.هل SHA-256 هي نفسها SHA-2؟
SHA-2 عائلة تضم SHA-224 وSHA-256 وSHA-384 وSHA-512 وSHA-512/224 وSHA-512/256، وSHA-256 أكثر أعضائها شيوعًا. أما SHA-3 (FIPS 202) فتصميم منفصل يعتمد على Keccak ويعطي نتائج مختلفة.
ما طول تجزئة SHA-256؟
=. ولكلٍّ من SHA3-256 وBLAKE2s الطول نفسه؛ وتعرض أداة تحديد نوع التجزئة مثل هذه الاحتمالات لأي تجزئة مجهولة.