مولّد تجزئة SHA-1

إنشاء تجزئة SHA-1 من أي نص

نص الإدخال

يعمل محليًا · آمن للصق الأسرار

تجزئة SHA-1

ستظهر تجزئة SHA-1 هنا…

ما هي تجزئة SHA-1؟

SHA-1 (خوارزمية التجزئة الآمنة 1) دالة تجزئة تشفيرية تُنتج ملخصاً ثابتاً بحجم 160 بت (20 بايت) من أي مدخل. نشرتها NSA وأقرّتها NIST عام 1995 ضمن معيار FIPS PUB 180-1 ووُثِّقت لاحقاً في RFC 3174. صُمِّمت SHA-1 خلفاً أقوى لـ SHA-0 وMD5. تعالج الخوارزمية المدخلات في كتل بحجم 512 بت عبر 80 جولة من العمليات الثنائية، مُنتِجةً بصمة سداسية عشرية من 40 حرفاً شكّلت العمود الفقري لـ SSL/TLS وPGP وSSH وIPsec لأكثر من عقد.

كسائر دوال التجزئة التشفيرية، تُعدّ SHA-1 تحويلاً أحادي الاتجاه: حساب التجزئة من المدخل سريع، لكن استعادة المدخل من التجزئة وحدها أمرٌ مستحيل حسابياً. يُنتج تغيير بتّ واحد في المدخل ملخصاً مختلفاً كلياً بحجم 160 بت — وهي خاصية تُعرف بـ "تأثير الانهيار". تُربط مساحة مدخلات كبيرة بشكل تعسفي بمخرج ثابت 160 بت، مما يعني وجود تصادمات (مدخلان مختلفان بنفس التجزئة) رياضياً. ويدّعي مصمّمو دوال التجزئة أن إيجاد هذه التصادمات يستلزم ما يقارب 2^80 عملية — أي نصف طول البت في المخرج.

في عام 2017، نشر كل من Google وCWI Amsterdam هجوم SHAttered، إذ أثبتا إمكانية إحداث أول تصادم عملي في SHA-1 بإنتاج ملفَّي PDF مختلفَين بنفس الملخص. استغرق الهجوم نحو 2^63.1 عملية حسابية لـ SHA-1 — أقل بكثير من الحدّ النظري 2^80. وفي عام 2020، خفّض Gaetan Leurent وThomas Peyrin التكلفة أكثر بهجوم تصادم ذي بادئة مختارة يتطلب نحو 2^63.4 عملية. نتيجةً لذلك، أعلنت جميع المتصفحات الكبرى وجهات إصدار الشهادات والهيئات المعيارية إيقاف SHA-1 للتوقيعات الرقمية وشهادات TLS. غير أن SHA-1 لا يزال مستخدماً في أغراض غير أمنية: معرّفات كائنات Git (رغم انتقال Git تدريجياً إلى SHA-256)، وبنى HMAC القديمة، وفحص سلامة الملفات حيث لا يُشترط تحمّل التصادمات الإجبارية.

لماذا تستخدم مولّد SHA-1 هذا؟

أنشئ تجزئات SHA-1 فوراً دون تثبيت أي شيء أو كتابة كود. الصق نصّك واحصل على الملخص السداسي العشري المكوّن من 40 حرفاً في الوقت الفعلي — مفيد للتحقق من المجاميع الاختبارية القديمة، أو تصحيح أخطاء الداخليات في Git، أو اختبار سير العمل المبني على التجزئة.

تجزئة فورية
يتحدّث المخرج أولاً بأول أثناء الكتابة. لا نقرات أزرار ولا انتظار — تظهر تجزئة SHA-1 حرفاً بحرف مع كل تعديل في المدخل.
🔒
معالجة تُقدّم الخصوصية أولاً
تتم عملية التجزئة كاملةً محلياً في متصفحك باستخدام Web Crypto API. لا يغادر نصّ المدخل جهازك أبداً ولا يُرسَل إلى أي خادم.
📋
نسخ بنقرة واحدة
انسخ التجزئة إلى الحافظة بنقرة واحدة. بدّل بين مخرجات سداسية بالأحرف الصغيرة أو الكبيرة لتتوافق مع أي تنسيق يتوقعه نظامك.
🔍
لا حساب مطلوب
لا تسجيل ولا تسجيل دخول ولا حدود للاستخدام. افتح الصفحة وابدأ التجزئة فوراً. يعمل على أي جهاز يحمل متصفحاً حديثاً.

حالات استخدام SHA-1

داخليات Git والتصحيح
يُعرّف Git كل كائن (commit، tree، blob، tag) بتجزئة SHA-1 الخاصة به. عند تصحيح أوامر Git الداخلية، أو التحقق من ملفات الحزم، أو كتابة أدوات Git مخصصة، يساعدك مولّد SHA-1 السريع على التحقق من معرّفات الكائنات مقارنةً بالقيم المتوقعة.
التحقق من الأنظمة القديمة
كثير من الأنظمة القديمة وسجلات الحزم وآليات تحديث البرامج الثابتة لا تزال تنشر مجاميع SHA-1 الاختبارية مع التنزيلات. أنشئ تجزئات SHA-1 وقارنها للتحقق من سلامة الملفات حين لا تتوفر ملخصات SHA-256.
سلامة الموارد الفرعية (SRI)
رغم أن sha256 وsha384 هما الخياران المفضّلان لتجزئات SRI في وسوم HTML script وlink، فإن بعض إعدادات CDN القديمة لا تزال تعتمد على SHA-1. أنشئ الملخص المتوقع للتدقيق في سمات SRI الحالية أو الانتقال إلى بديل أحدث.
اختبار الجودة والانحدار
قارن تجزئات SHA-1 لاستجابات API أو نتائج البناء أو لقطات قواعد البيانات بين دورات الاختبار لرصد التغييرات غير المتوقعة دون إجراء مقارنة كاملة بايت بايت على المخرجات الكبيرة.
إزالة التكرار في البيانات
احسب تجزئات SHA-1 لمحتويات الملفات أو سجلات البيانات في خطوط ETL لتحديد المكررات. يوفر المخرج البالغ 160 بت ضماناً أقوى للتفرد مقارنةً بـ MD5 في سيناريوهات إزالة التكرار غير الإجبارية.
التعلم والتعليم
SHA-1 خوارزمية موثقة توثيقاً جيداً وتمتلك أدبيات أكاديمية واسعة. جرّبها لفهم بناء Merkle-Damgård وجدولة الرسائل، ولماذا ينهار تحمّل التصادمات حين يكون طول المخرج قصيراً نسبياً أمام القدرة الحوسبية الحديثة.

SHA-1 مقارنةً بخوارزميات التجزئة الأخرى

تُنتج SHA-1 ملخصاً بحجم 160 بت — أطول من MD5 (128 بت) لكنه أقصر بكثير من خوارزميات عائلة SHA-2. يقارن الجدول أدناه أحجام الملخصات والمعايير وحالات الاستخدام المناسبة لكل خوارزمية.

الخوارزميةحجم الملخصطول السداسي العشريالمعيارالأنسب لـ
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

كيف تعمل SHA-1؟

تتبع SHA-1 بناء Merkle-Damgård: يُضاف حشو إلى الرسالة، ثم تُقسَّم إلى كتل 512 بت، وتُعالَج كل كتلة عبر 80 جولة من العمليات الثنائية التي تمزج المدخل مع جدول رسائل مشتق من الكتلة. تحمل خمس كلمات حالة بحجم 32 بت (H0 إلى H4) حالة التجزئة الجارية، ويُنتج تسلسلها النهائي الملخص البالغ 160 بت.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
الخطوةالوصف
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

الفارق الجوهري بين SHA-1 وMD5 هو عدد كلمات الحالة (5 مقابل 4)، وعدد الجولات لكل كتلة (80 مقابل 64)، واستخدام جدول رسائل مع تغذية راجعة بالتدوير الأيسر. تمنح هذه الفوارق SHA-1 مخرجاً أكبر (160 مقابل 128 بت) وهامشاً أمنياً أوسع في الأصل، رغم أن الخوارزميتين تُعدّان الآن مكسورتَين من حيث تحمّل التصادمات.

أمثلة كودية

كيفية توليد تجزئات SHA-1 في لغات وبيئات شائعة. على عكس MD5، تتوفر SHA-1 في Web Crypto API للمتصفح، مما يجعلها قابلة للاستخدام دون مكتبات خارجية في بيئتَي المتصفح وNode.js.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

الأسئلة الشائعة

هل SHA-1 لا تزال آمنة للاستخدام؟
SHA-1 ليست آمنة للتطبيقات الحساسة أمنياً. أثبت هجوم SHAttered عام 2017 إمكانية توليد تصادمات عملية، وخفّض هجوم البادئة المختارة عام 2020 التكلفة أكثر. للتوقيعات الرقمية أو شهادات TLS أو أي سيناريو يمكن فيه للمهاجم صياغة مدخلات متصادمة، استخدم SHA-256 أو SHA-3 بدلاً منها. أما لأغراض غير أمنية كالمجاميع الاختبارية ومفاتيح الذاكرة المؤقتة حيث لا يتحكم أي طرف خارجي في المدخل، فلا تزال SHA-1 وظيفية.
ما الفرق بين SHA-1 وSHA-256؟
تُنتج SHA-1 ملخصاً بحجم 160 بت (40 حرفاً سداسياً عشرياً) وهي عرضة لهجمات التصادم. أما SHA-256 فتُنتج ملخصاً بحجم 256 بت (64 حرفاً سداسياً عشرياً) وتنتمي إلى عائلة SHA-2 التي لا تواجه هجمات عملية معروفة. SHA-256 أبطأ بنحو 20-30% من SHA-1 على نفس العتاد، لكن الـ 96 بتاً الإضافية في المخرج وغياب نقاط الضعف البنيوية المعروفة يجعلانها الخيار الافتراضي الموصى به لأي مشروع جديد.
لماذا يستخدم Git خوارزمية SHA-1؟
حين صمّم Linus Torvalds Git عام 2005، كانت SHA-1 تُعدّ آمنة وتوفر توازناً جيداً بين السرعة وتحمّل التصادمات في التخزين القابل للعنونة بالمحتوى. يستخدم Git خوارزمية SHA-1 بوصفها معرّفاً للمحتوى لا آلية أمنية — فهو يكشف الفساد العرضي لا التلاعب المقصود. منذ عام 2021، يتحوّل Git تدريجياً إلى SHA-256 عبر إطار امتداد التجزئة الموصوف في خطة git-hash-function-transition.
هل يمكن عكس تجزئة SHA-1 للحصول على المدخل الأصلي؟
لا. SHA-1 دالة أحادية الاتجاه تُفقد معلومات أثناء التجزئة. بالنسبة للمدخلات القصيرة أو الشائعة، يمكن للمهاجمين استخدام جداول قوس قزح أو البحث الشامل للعثور على النص الأصلي، لكن هذا ليس عكساً للخوارزمية بل بحثٌ استنفادي في فضاء المدخلات. للكلمات السرية، استخدم bcrypt أو scrypt أو Argon2 بدلاً من أي دالة تجزئة سريعة.
كيف يعمل هجوم SHAttered؟
يستغل هجوم SHAttered نقاط ضعف بنيوية في دالة الضغط الخاصة بـ SHA-1. بإنشاء كتلتَي رسالتَين مختلفتَين بحجم 512 بت تُنتجان نفس حالة التجزئة الوسيطة بعناية، أنشأ الباحثون ملفَّي PDF بنفس ملخص SHA-1 لكن بمحتوى مرئي مختلف. استغرق الهجوم نحو 2^63 عملية حسابية لـ SHA-1 — ما يعادل نحو 6500 عام بمعالج فردي، لكنه ممكن على مجموعة معالجات رسومية في غضون أشهر. وقد انخفضت التكلفة منذ ذلك الحين مع تحسين التقنيات.
ما الفرق بين SHA-1 وHMAC-SHA1؟
SHA-1 دالة تجزئة بسيطة: hash = SHA1(message). أما HMAC-SHA1 فهو رمز مصادقة رسائل يعتمد على مفتاح: mac = HMAC(key, message). يُغلّف HMAC دالة التجزئة في بناء يمنع هجمات توسيع الطول ويشترط مفتاحاً سرياً. والجدير بالذكر أن HMAC-SHA1 لا يزال يُعدّ آمناً لمصادقة الرسائل رغم كسر SHA-1 نفسها من حيث تحمّل التصادمات، لأن أمان HMAC يعتمد على خصائص الدالة الزائفة العشوائية لدالة الضغط لا على تحمّل التصادمات.
هل أستخدم SHA-1 أم MD5 لمجاميع التحقق من الملفات؟
SHA-1 خيار أفضل من MD5 لمجاميع التحقق من الملفات. تُنتج MD5 ملخصاً بحجم 128 بت وكُسرت منذ عام 2004، إذ أصبحت هجمات التصادم العملية قابلة للتنفيذ في ثوانٍ. تُنتج SHA-1 ملخصاً بحجم 160 بت وهجمات تصادمها، رغم إثباتها، لا تزال أكثر كلفةً. غير أنه لأي نظام جديد، يُفضَّل استخدام SHA-256 — فهي توفر ملخصاً بحجم 256 بت دون هجمات عملية معروفة وتحظى بدعم واسع عبر جميع المنصات واللغات.