مولد Hash SHA-256
إنشاء hash SHA-256 من أي نص
نص الإدخال
Hash SHA-256
سيظهر hash SHA-256 هنا…
ما هي تجزئة SHA-256؟
SHA-256 (خوارزمية التجزئة الآمنة 256 بت) دالة تجزئة تشفيرية من عائلة SHA-2، نشرتها NIST عام 2001 ضمن معيار FIPS 180-2 (المحدَّث في FIPS 180-4). لأي مدخل — سواء كان حرفاً واحداً أو ملفاً بحجم عدة غيغابايت أو سلسلة نصية فارغة — تُنتج SHA-256 ملخصاً ثابتاً بحجم 256 بت (32 بايت)، يُعرض اصطلاحاً كـ 64 حرفاً سداسيَّ عشري. وتُعدّ SHA-256 دالة التجزئة الأكثر انتشاراً في أنظمة الإنتاج اليوم، إذ تُشكّل العمود الفقري لسلاسل شهادات TLS وإثبات العمل في Bitcoin وسلامة الموارد الفرعية (SRI) وسير عمل توقيع الكود.
SHA-256 دالة أحادية الاتجاه: حساب التجزئة من المدخل سريع (مئات الميغابايت في الثانية على الأجهزة الحديثة)، لكن عكس العملية — إيجاد مدخل يُنتج تجزئة معينة — أمر مستحيل حسابياً. هذه الخاصية، المعروفة بمقاومة الصورة الأصلية، تجعل SHA-256 مناسبة لتجزئة كلمات المرور (حين تُقرن بـ salt وتمديد المفتاح)، والتوقيعات الرقمية، والتحقق من سلامة البيانات. وعلى خلاف MD5 وSHA-1، لم يُثبَت حتى الآن أي هجوم تصادم أو هجوم صورة أصلية على SHA-256 الكاملة.
تضم عائلة SHA-2 ستة متغيرات: SHA-224 وSHA-256 وSHA-384 وSHA-512 وSHA-512/224 وSHA-512/256. تعمل SHA-256 على كلمات 32 بت بـ 64 جولة لكل كتلة، وهي محسَّنة للمعالجات ذات 32 بت. أما SHA-512 فتستخدم كلمات 64 بت و80 جولة، مما يجعلها أسرع أحياناً على المنصات ذات 64 بت. وللتطبيقات التي يكفيها ملخص 256 بت، تبقى SHA-256 التوصية الافتراضية من NIST وIETF ومنتدى CA/Browser.
لماذا تستخدم مولّد SHA-256 هذا؟
يستلزم إنشاء تجزئة SHA-256 عادةً أمر طرفية أو بضعة أسطر من الكود. تتيح لك هذه الأداة المبنية على المتصفح حساب ملخصات SHA-256 دون تثبيت أي شيء، أو تبديل السياق، أو كتابة سكريبت.
حالات استخدام SHA-256
مقارنة متغيرات عائلة SHA-2
SHA-256 جزء من عائلة SHA-2 المعرَّفة في FIPS 180-4. يقدّم كل متغير مقايضة بين حجم الملخص وخصائص الأداء وهامش الأمان. يقارن الجدول أدناه جميع متغيرات SHA-2 التي من المرجح أن تصادفها.
| المتغير | حجم الملخص | طول السداسي العشري | الحجم بالبايت | الأنسب لـ |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | Government / CNSS, higher collision margin |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-256 مقابل SHA-1 مقابل MD5 مقابل SHA-3
يعتمد اختيار خوارزمية التجزئة المناسبة على متطلبات الأمان وقيود التوافق. تحتل SHA-256 النقطة المثالية من الناحية العملية: آمنة ومدعومة على نطاق واسع (بما فيها Web Crypto API) وسريعة بما يكفي لمعظم أعباء العمل. يغطي جدول المقارنة أدناه الخصائص الأهم عند اختيار دالة تجزئة.
| الخاصية | SHA-256 | SHA-1 | MD5 | SHA-3-256 |
|---|---|---|---|---|
| Digest size | 256 bits (64 hex) | 160 bits (40 hex) | 128 bits (32 hex) | 256 bits (64 hex) |
| Security status | Secure | Broken (2017) | Broken (2004) | Secure |
| Collision resistance | 2^128 operations | Practical attack | Practical attack | 2^128 operations |
| Block size | 512 bits | 512 bits | 512 bits | 1600 bits (sponge) |
| Rounds | 64 | 80 | 64 | 24 |
| Standard | FIPS 180-4 | FIPS 180-4 | RFC 1321 | FIPS 202 |
| Web Crypto API | Yes | Yes | No | No |
| Primary use today | TLS, blockchain, SRI | Legacy git only | Non-security checksums | Backup standard |
كيف تعمل SHA-256 داخلياً؟
تعالج SHA-256 المدخل في كتل بحجم 512 بت (64 بايت) عبر بناء Merkle–Damgård. تُهيّئ الخوارزمية ثماني كلمات حالة بحجم 32 بت (H0–H7) مشتقة من الأجزاء الكسرية للجذور التربيعية لأول ثمانية أعداد أولية. تمر كل كتلة بـ 64 جولة من العمليات الخلطية التي تستخدم العمليات الثنائية (AND وXOR وNOT والتدوير الأيمن والإزاحة اليمنى) و64 ثابتاً جولياً مشتقاً من الجذور التكعيبية لأول 64 عدداً أولياً.
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
| الخطوة | الوصف |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer. |
| Block splitting | Divide the padded message into 512-bit (64-byte) blocks. |
| Message schedule | Expand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations. |
| Compression | Process 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes. |
| Output | Concatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters. |
يكفل تأثير الانهيار أن قلب بتّ واحد في المدخل يُغيّر ما يقارب 50% من بتات المخرج. هذه الخاصية، مقرونةً بمقاومة تصادم تبلغ 2^128، هي السبب في بقاء SHA-256 التوصية الأساسية للتطبيقات الحساسة أمنياً في عام 2026.
أمثلة كود SHA-256
SHA-256 متاحة بشكل أصلي في كل لغة وبيئة تشغيل رئيسية. توفّرها Web Crypto API في المتصفحات دون الحاجة إلى أي مكتبة. تعرض الأمثلة أدناه أنماط استخدام من الواقع العملي، تشمل التعامل مع مدخلات Unicode وتجزئة الملفات.
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-256', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"import hashlib
# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result) # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha256()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha256.Sum256(data)
fmt.Printf("%x\n", hash)
// → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}# Using sha256sum (Linux) or shasum (macOS) echo -n "hello world" | sha256sum # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # macOS echo -n "hello world" | shasum -a 256 # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # Verify a file checksum echo "b94d27b... myfile.bin" | sha256sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha256 # → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9