Hash چیست؟
Hash چیست؟
خروجی ثابتطولی است که از یک Hash Function روی داده تولید میشود و میتواند بهعنوان Fingerprint داده استفاده شود.
تابع هش رمزنگاری یا Cryptographic Hash Function الگوریتمی است که دادهای با طول دلخواه را به یک خروجی با طول مشخص تبدیل میکند. Hash برای ساخت Fingerprint داده، تشخیص تغییر، ساخت شناسه، امضای دیجیتال، Merkle Tree و در بعضی شبکهها Proof of Work استفاده میشود.
Hashing با Encryption فرق دارد: داده Hashشده قرار نیست با «کلید» به متن اولیه برگردد. NIST برای یک Hash Function رمزنگاریشده ویژگیهایی مانند Preimage Resistance، Second-preimage Resistance و Collision Resistance را از مهمترین خواص امنیتی میداند. تعریف Hash Function در NIST
در حوزه ارز دیجیتال نیز باید میان «تابع هش»، «الگوریتم استخراج» و «مکانیزم اجماع» تفاوت گذاشت. همه رمزارزها Mining ندارند و ماینرها نیز الگوریتم را «رمزگشایی» نمیکنند. برای درک نقش Hash در ساختار زنجیره میتوانید مقاله بلاکچین چیست؟ را نیز مطالعه کنید.
Hash Function ورودی را به Message Digest یا Hash Value تبدیل میکند. برای مثال SHA-256 بدون توجه به اینکه ورودی چند Byte یا چند Megabyte باشد، خروجی 256 بیتی تولید میکند.
یک Hash رمزنگاری مناسب معمولاً باید ویژگیهای زیر را داشته باشد:
NIST نیز سه ویژگی Preimage، Second-preimage و Collision Resistance را معیارهای اصلی امنیت Hash Functionهای رمزنگاری میداند. راهنمای Hash Functions در NIST

| فناوری | هدف | قابل برگشت؟ | نمونه کاربرد |
|---|---|---|---|
| Hashing | ساخت Digest / Fingerprint | عمداً یکطرفه طراحی میشود | Integrity، TXID، Merkle Tree |
| Encryption | محرمانهکردن داده | با Key مناسب قابل Decrypt است | محافظت از اطلاعات محرمانه |
| Digital Signature | اثبات Authorization و Integrity | عملیات «Decrypt متن» نیست | امضای تراکنش |
Hashing در Blockchain فقط برای Mining نیست. بسته به Protocol، از Hash در بخشهای مختلف استفاده میشود:
در Bitcoin، TXID و Merkle Tree از Double-SHA-256 استفاده میکنند و Header بلاک نیز برای Proof of Work Hash میشود. مستند رسمی Bitcoin توضیح میدهد که Header Hash باید برابر یا پایینتر از Target شبکه باشد. مستند Block Chain در Bitcoin Developer برای جزئیات مربوط به قدرت محاسباتی این فرایند، مقاله هش ریت چیست؟ را مطالعه کنید.
SHA-256 یکی از اعضای خانواده SHA-2 و استاندارد Secure Hash Standard است. خروجی آن 256 بیت است. NIST در FIPS 180-4 خانواده SHA-2 را برای تولید Message Digest استاندارد کرده است. FIPS 180-4 در NIST
SHA-3 خانواده دیگری از Hash Functionهاست که NIST در FIPS 202 استاندارد کرده است. این خانواده بر طراحی Keccak بنا شده و شامل SHA3-224، SHA3-256، SHA3-384 و SHA3-512 است. استاندارد FIPS 202 / SHA-3
در Ethereum اصطلاح Keccak-256 بسیار مهم است. Keccak-256 مورد استفاده Ethereum با SHA3-256 استاندارد NIST دقیقاً یک خروجی یکسان تولید نمیکند؛ تفاوت Padding نهایی باعث شده این دو تابع با وجود خویشاوندی، قابل جایگزینی مستقیم نباشند.
مستند رسمی Ethereum نیز توضیح میدهد Hashهایی که در ابتدا «sha3» نامیده میشدند در واقع Variant پیش از استاندارد نهایی و معمولاً با نام Keccak-256 شناخته میشوند. توضیح Keccak و SHA-3 در مستند Ethereum
برای طراحی جدیدی که Collision Resistance اهمیت دارد، نباید MD5 یا SHA-1 را بهعنوان گزینه امن عمومی توصیه کرد. حملات Collision عملی روی این خانوادههای قدیمی، استفاده امنیتی آنها را محدود کرده است.
NIST توصیه کرده استفاده امنیتی از SHA-1 به SHA-2 یا SHA-3 مهاجرت کند و برنامه Transition کامل SHA-1 را تا پایان ۲۰۳۰ اعلام کرده است. برنامه NIST برای کنارگذاری SHA-1

| نام | دسته اصلی | کاربرد نمونه |
|---|---|---|
| SHA-256 | Cryptographic hash function | Integrity، IDs، Bitcoin PoW |
| SHA-3 / Keccak | Cryptographic hash family | Hashing عمومی / Ethereum Keccak |
| Scrypt | Memory-hard password KDF؛ در برخی PoWها نیز استفاده شده | Password derivation / Scrypt-based mining |
| Equihash | Proof-of-Work scheme | Memory-oriented PoW |
| Ethash | Historical Ethereum PoW algorithm | Ethereum پیش از Merge |
| RandomX | Proof-of-Work algorithm | Monero PoW |
| X11 | Chained hash-based PoW construction | برخی شبکههای PoW |
Scrypt در اصل یک Password-Based Key Derivation Function حافظهمحور است، نه صرفاً یک Hash Function همرده SHA-256. RFC 7914 آن را KDFی مبتنی بر Memory-hard Function تعریف میکند که برای افزایش هزینه حمله با سختافزار سفارشی طراحی شده است. RFC 7914 - scrypt
برخی شبکههای Proof-of-Work از Scrypt در فرایند Mining استفاده کردهاند، اما Block Time، Hashrate Unit و Profitability ویژگی ثابت خود Scrypt نیستند. این موارد به Protocol، Difficulty، Hardware و شرایط همان شبکه وابستهاند.

Ethash الگوریتم Proof of Work تاریخی Ethereum بود و از طراحی Dagger-Hashimoto توسعه یافت. هدف آن Memory-hard بودن بود تا مزیت Hardware تخصصی را کاهش دهد؛ با این حال در عمل ASICهای Ethash نیز ساخته شدند.
مهمترین اصلاح ۲۰۲۶ این است که Ethereum دیگر Ethash یا Mining ندارد. Ethereum در ۱۵ سپتامبر ۲۰۲۲ با The Merge از Proof of Work به Proof of Stake منتقل شد. The Merge در Ethereum.org

RandomX یک الگوریتم Proof of Work است که برای CPUهای عمومی طراحی شده و اجرای Programهای شبهتصادفی و Memory-intensive را به کار میگیرد. Monero در مشخصات فنی فعلی خود RandomX را مکانیزم Proof of Work شبکه معرفی میکند. مشخصات فنی Monero
این نامها را بهتر است در بخش «Mining / Proof-of-Work Algorithms» نگه داریم، نه در فهرست Hash Functionهای استاندارد رمزنگاری.
Miner داده رمزگذاریشده را Decrypt نمیکند. در یک شبکه PoW، Miner Block Candidate میسازد و مقادیر قابل تغییر مانند Nonce یا ExtraNonce را بارها تغییر میدهد تا Hash Header شرایط Target را برآورده کند.
پیدا کردن جواب معمولاً نیازمند تعداد بسیار زیادی Hash Attempt است، اما Verify کردن نتیجه برای Nodeهای دیگر بسیار ارزانتر است. این عدم تقارن میان هزینه تولید Proof و هزینه Verification یکی از ویژگیهای اصلی Proof of Work است. برای درک ارتباط Hash، Block و ساخت زنجیره، مقاله شبکه بیتکوین چگونه کار میکند؟ نیز مفید است.
برای یک Hash با خروجی n بیت، امنیت نظری در برابر Collision معمولاً حدود 2^(n/2) Operation است، نه 2^n. این نتیجه با Birthday Bound مرتبط است.
برای SHA-256، NIST قدرت Collision Resistance را حدود 128 بیت و Preimage Resistance را 256 بیت گزارش میکند. همین تفاوت نشان میدهد «طول خروجی 256 بیت» به معنی «256 بیت امنیت Collision» نیست.
SHA-256، SHA-3 و Keccak نمونه Hash Functionهای رمزنگاریاند؛ Scrypt در اصل یک Memory-hard KDF است و RandomX، Equihash، X11 و Ethash در Context ارز دیجیتال بیشتر بهعنوان Algorithm/Schemeهای Proof of Work مطرح میشوند.
Hashing در Blockchain کاربردهای مختلفی از TXID و Merkle Tree تا اتصال Blockها و Proof of Work دارد. برای نوشتن دقیق درباره این موضوع باید میان Hashing، Encryption، Digital Signature، Consensus و Mining مرز مشخصی وجود داشته باشد.
برای کاربرانی که پس از شناخت مفاهیم فنی قصد ورود به بازار دارند، صرافی ارز دیجیتال ایران اکسچنج مسیر معاملاتی جداگانهای از آموزش فنی الگوریتمهای هش و استخراج ارائه میدهد.
پیش از خرید ارز دیجیتال، بهتر است میان فناوری شبکه، الگوریتم اجماع و رفتار قیمتی دارایی تفاوت گذاشته شود.
قیمت ارز دیجیتال یک متغیر بازار است و مستقیماً از نوع Hash Function یا Mining Algorithm نتیجه نمیشود.
در Bitcoin، SHA-256 و Proof of Work نقش فنی دارند؛ برای Intent معاملاتی، خرید بیت کوین و قیمت بیت کوین موضوعاتی جدا از معماری Hashing هستند.
Ethereum امروز از Proof of Stake استفاده میکند و Ethash دیگر الگوریتم Mining شبکه اصلی آن نیست؛ برای بررسی خود دارایی، خرید اتریوم و قیمت اتریوم مسیرهای معاملاتی جداگانهاند.
خروجی ثابتطولی است که از یک Hash Function روی داده تولید میشود و میتواند بهعنوان Fingerprint داده استفاده شود.
Hashing Encryption نیست و کلیدی برای Decrypt کردن خروجی ندارد. هدف Hash Function امن این است که بازیابی Preimage از Digest از نظر محاسباتی دشوار باشد.
SHA-256 همچنان جزو Hash Functionهای استاندارد و مورد قبول NIST است و برای کاربردهای جدید عمومی استفاده میشود؛ امنیت نهایی به نحوه استفاده در Protocol نیز وابسته است.
هر دو خانواده برای کاربردهای امن قابل استفادهاند. NIST برنامهای برای مهاجرت عمومی اجباری از SHA-2 به SHA-3 اعلام نکرده و انتخاب به Protocol و نیازهای طراحی بستگی دارد.
Ethereum بهطور گسترده از Keccak-256 استفاده میکند که با SHA3-256 استاندارد NIST به دلیل تفاوت Padding دقیقاً یک تابع یکسان نیست.
خیر. Ethereum از سپتامبر ۲۰۲۲ Proof of Stake است و Mining روی Mainnet آن متوقف شده است.
Hash Function یک Primitive رمزنگاری است؛ Mining Algorithm یک Scheme بزرگتر برای Proof of Work است که میتواند از یک یا چند Hash Function، Memory و سایر عملیات استفاده کند.