ToolDeck

SHA-1 Hash Generator

تولید هش SHA-1 از هر متنی

متن ورودی

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است

هش SHA-1

هش SHA-1 اینجا نمایش داده می‌شود…

هش SHA-1 چیست؟

SHA-1 (الگوریتم هش امن ۱) یک تابع هش رمزنگاری است که از هر ورودی، یک خلاصه ثابت ۱۶۰ بیتی (۲۰ بایتی) تولید می‌کند. این الگوریتم توسط NSA طراحی و در سال ۱۹۹۵ توسط NIST به‌عنوان FIPS PUB 180-1 استانداردسازی شد و بعداً در RFC 3174 مستند شد. SHA-1 به‌عنوان جانشینی قوی‌تر برای SHA-0 و MD5 طراحی شد. این الگوریتم ورودی را در بلوک‌های ۵۱۲ بیتی پردازش کرده و طی ۸۰ دور عملیات بیتی، یک اثرانگشت ۴۰ کاراکتری هگزادسیمال تولید می‌کند که برای بیش از یک دهه ستون فقرات SSL/TLS، PGP، SSH و IPsec بود.

مانند همه توابع هش رمزنگاری، SHA-1 یک تبدیل یک‌طرفه است: محاسبه هش از ورودی سریع است، اما بازیابی ورودی صرفاً از روی هش از نظر محاسباتی غیرممکن است. تغییر حتی یک بیت در ورودی، یک خلاصه ۱۶۰ بیتی کاملاً متفاوت تولید می‌کند — خاصیتی که «اثر بهمن» نام دارد. SHA-1 یک فضای ورودی دلخواه را به خروجی ثابت ۱۶۰ بیتی نگاشت می‌کند، که یعنی تصادم (دو ورودی متفاوت با هش یکسان) از نظر ریاضی ناگزیر است. ادعای امنیتی یک تابع هش این است که یافتن چنین تصادم‌هایی باید تقریباً به ۲^۸۰ عملیات نیاز داشته باشد — نصف طول بیت خروجی.

در سال ۲۰۱۷، گوگل و CWI Amsterdam حمله SHAttered را منتشر کردند که اولین تصادم عملی SHA-1 را با تولید دو فایل PDF متفاوت با همان خلاصه نشان داد. این حمله تقریباً به ۲^۶۳.۱ محاسبه SHA-1 نیاز داشت — بسیار پایین‌تر از مرز نظری ۲^۸۰. در سال ۲۰۲۰، Gaetan Leurent و Thomas Peyrin با حمله تصادم پیشوند انتخابی هزینه را به حدود ۲^۶۳.۴ عملیات کاهش دادند. در نتیجه، همه مرورگرهای اصلی، مراجع گواهی و سازمان‌های استانداردسازی SHA-1 را برای امضای دیجیتال و گواهی‌های TLS منسوخ اعلام کردند. با این حال، SHA-1 برای اهداف غیرامنیتی هنوز استفاده می‌شود: شناسه‌های اشیاء Git (هرچند Git در حال مهاجرت به SHA-256 است)، ساختارهای HMAC قدیمی، و چک‌سام‌های یکپارچگی فایل که در آن‌ها مقاومت در برابر تصادم مخرب الزامی نیست.

NIST FIPS 180-4 — Secure Hash Standard →

چرا از این مولد SHA-1 استفاده کنیم؟

هش‌های SHA-1 را بدون نصب چیزی یا نوشتن کد، فوری تولید کنید. متن خود را پیست کنید و خلاصه ۴۰ کاراکتری هگز را بلادرنگ دریافت کنید — برای تأیید چک‌سام‌های قدیمی، اشکال‌زدایی داخلی Git، یا آزمایش گردش‌کارهای مبتنی بر هش مفید است.

هش‌سازی فوری
خروجی همزمان با تایپ به‌روزرسانی می‌شود. بدون نیاز به کلیک دکمه یا انتظار — خلاصه SHA-1 کاراکتر به کاراکتر همزمان با ویرایش ورودی نمایش داده می‌شود.
🔒
پردازش با اولویت حریم خصوصی
تمام عملیات هش‌سازی به‌صورت محلی در مرورگر شما با استفاده از Web Crypto API انجام می‌شود. متن ورودی شما هرگز دستگاه‌تان را ترک نمی‌کند و به هیچ سروری ارسال نمی‌شود.
📋
کپی با یک کلیک
هش را با یک کلیک در کلیپ‌بورد کپی کنید. بین خروجی هگز کوچک و بزرگ جابجا شوید تا با هر فرمتی که سیستم شما انتظار دارد مطابقت داشته باشد.
🔍
بدون نیاز به حساب کاربری
بدون ثبت‌نام، بدون ورود، بدون محدودیت استفاده. صفحه را باز کنید و فوراً شروع به هش‌سازی کنید. در هر دستگاهی با مرورگر مدرن کار می‌کند.

موارد استفاده SHA-1

داخلی Git و اشکال‌زدایی
Git هر شیء (commit، tree، blob، tag) را با هش SHA-1 آن شناسایی می‌کند. هنگام اشکال‌زدایی دستورات plumbing در Git، تأیید فایل‌های pack، یا نوشتن ابزار سفارشی Git، یک مولد سریع SHA-1 به شما کمک می‌کند تا شناسه‌های اشیاء را با مقادیر مورد انتظار مقایسه کنید.
تأیید سیستم‌های قدیمی
بسیاری از سیستم‌های قدیمی، رجیستری‌های بسته و مکانیزم‌های به‌روزرسانی firmware هنوز چک‌سام‌های SHA-1 را در کنار دانلودها منتشر می‌کنند. هش‌های SHA-1 را تولید و مقایسه کنید تا یکپارچگی فایل را هنگامی که خلاصه‌های SHA-256 در دسترس نیستند تأیید کنید.
یکپارچگی زیرمنبع (SRI)
در حالی که sha256 و sha384 برای هش‌های SRI در تگ‌های script و link در HTML ترجیح داده می‌شوند، برخی پیکربندی‌های قدیمی CDN هنوز به SHA-1 وابسته هستند. خلاصه مورد انتظار را تولید کنید تا ویژگی‌های SRI موجود را ممیزی یا انتقال دهید.
تضمین کیفیت و تست رگرسیون
هش‌های SHA-1 پاسخ‌های API، آرتیفکت‌های build، یا اسنپ‌شات‌های پایگاه داده را بین اجراهای تست مقایسه کنید تا تغییرات غیرمنتظره را بدون انجام یک diff کامل بایت به بایت از خروجی‌های بزرگ تشخیص دهید.
حذف داده‌های تکراری
هش‌های SHA-1 محتوای فایل‌ها یا رکوردهای داده را در pipeline‌های ETL محاسبه کنید تا تکراری‌ها را شناسایی کنید. خروجی ۱۶۰ بیتی تضمین یکتایی قوی‌تری نسبت به MD5 برای سناریوهای حذف تکراری بدون حضور مهاجم فراهم می‌کند.
یادگیری و آموزش
SHA-1 یک الگوریتم مستندسازی‌شده با ادبیات دانشگاهی گسترده است. با آن آزمایش کنید تا ساختار Merkle-Damgard، زمان‌بندی پیام، و چرایی شکسته شدن مقاومت تصادم هنگامی که طول خروجی نسبت به قدرت محاسباتی مدرن کوتاه است را درک کنید.

SHA-1 در مقابل سایر الگوریتم‌های هش

SHA-1 یک خلاصه ۱۶۰ بیتی تولید می‌کند — طولانی‌تر از 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-Damgard پیروی می‌کند: پیام padding می‌شود، به بلوک‌های ۵۱۲ بیتی تقسیم می‌شود، و هر بلوک از طریق ۸۰ دور عملیات بیتی پردازش می‌شود که ورودی را با یک زمان‌بندی پیام مشتق‌شده از بلوک مخلوط می‌کند. پنج کلمه وضعیت ۳۲ بیتی (H0 تا H4) وضعیت هش در حال اجرا را حمل می‌کنند، و الحاق نهایی این کلمات خلاصه ۱۶۰ بیتی را تولید می‌کند.

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 در تعداد کلمات وضعیت (۵ در مقابل ۴)، تعداد دورها در هر بلوک (۸۰ در مقابل ۶۴)، و استفاده از زمان‌بندی پیام با بازخورد چرخش چپ است. این تفاوت‌ها به 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 در سال ۲۰۱۷ تولید تصادم عملی را نشان داد، و حمله پیشوند انتخابی ۲۰۲۰ هزینه را بیشتر کاهش داد. برای امضاهای دیجیتال، گواهی‌های TLS، یا هر سناریویی که در آن یک مهاجم می‌تواند ورودی‌های تصادم‌دهنده بسازد، از SHA-256 یا SHA-3 استفاده کنید. برای اهداف غیرامنیتی مانند چک‌سام‌ها و کلیدهای کش که هیچ مهاجمی ورودی را کنترل نمی‌کند، SHA-1 همچنان قابل استفاده است.
تفاوت بین SHA-1 و SHA-256 چیست؟
SHA-1 یک خلاصه ۱۶۰ بیتی (۴۰ کاراکتر هگز) تولید می‌کند و در برابر حملات تصادم آسیب‌پذیر است. SHA-256 یک خلاصه ۲۵۶ بیتی (۶۴ کاراکتر هگز) تولید می‌کند و به خانواده SHA-2 تعلق دارد که هیچ حمله عملی شناخته‌شده‌ای ندارد. SHA-256 روی همان سخت‌افزار تقریباً ۲۰-۳۰٪ کندتر از SHA-1 است، اما ۹۶ بیت خروجی اضافی و عدم وجود ضعف‌های ساختاری شناخته‌شده، آن را به توصیه پیش‌فرض برای هر پروژه جدیدی تبدیل می‌کند.
چرا Git از SHA-1 استفاده می‌کند؟
وقتی Linus Torvalds در سال ۲۰۰۵ Git را طراحی کرد، SHA-1 ایمن تلقی می‌شد و تعادل خوبی بین سرعت و مقاومت تصادم برای ذخیره‌سازی قابل آدرس‌دهی محتوا ارائه می‌داد. Git از SHA-1 به‌عنوان شناسه محتوا، نه مکانیزم امنیتی استفاده می‌کند — خرابی تصادفی را تشخیص می‌دهد، نه دستکاری از سوی مهاجم. از سال ۲۰۲۱، Git در حال انتقال به SHA-256 از طریق چارچوب توسعه هش توضیح داده‌شده در برنامه git-hash-function-transition است.
آیا می‌توان یک هش SHA-1 را به ورودی اصلی برگرداند؟
خیر. SHA-1 یک تابع یک‌طرفه است که در طول هش‌سازی اطلاعات را دور می‌ریزد. برای ورودی‌های کوتاه یا رایج، مهاجمان می‌توانند از جداول رنگین‌کمان یا جستجوی brute-force برای یافتن متن اصلی استفاده کنند، اما این معکوس کردن الگوریتم نیست — این جستجوی جامع فضای ورودی است. برای رمزعبورها، به‌جای هر تابع هش سریع، از bcrypt، scrypt یا Argon2 استفاده کنید.
حمله SHAttered چگونه کار می‌کند؟
حمله SHAttered از ضعف‌های ساختاری در تابع فشرده‌سازی SHA-1 بهره می‌برد. با ساختن دقیق دو بلوک پیام ۵۱۲ بیتی مختلف که همان وضعیت هش میانی را تولید می‌کنند، مهاجمان دو فایل PDF با خلاصه‌های SHA-1 یکسان اما محتوای قابل مشاهده متفاوت ایجاد کردند. این حمله تقریباً به ۲^۶۳ محاسبه SHA-1 نیاز داشت — حدود ۶۵۰۰ سال زمان CPU تک‌هسته، اما روی یک خوشه GPU در چند ماه امکان‌پذیر بود. هزینه از آن زمان با تکنیک‌های بهبودیافته بیشتر کاهش یافته است.
تفاوت بین 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 یک خلاصه ۱۲۸ بیتی تولید می‌کند و از سال ۲۰۰۴ شکسته شده، با حملات تصادم عملی که اکنون در ثانیه‌ها قابل اجرا هستند. SHA-1 یک خلاصه ۱۶۰ بیتی تولید می‌کند و حملات تصادم آن، هرچند نشان داده شده‌اند، هنوز گران‌تر هستند. با این حال، برای هر سیستم جدیدی SHA-256 را ترجیح دهید — خلاصه ۲۵۶ بیتی بدون هیچ حمله عملی شناخته‌شده‌ای ارائه می‌دهد و در تمام پلتفرم‌ها و زبان‌ها پشتیبانی خوبی دارد.