تولیدکننده هش SHA-512
تولید هش SHA-512 از هر متنی
متن ورودی
هش SHA-512
هش SHA-512 اینجا نمایش داده میشود…
هش SHA-512 چیست؟
SHA-512 یک تابع هش رمزنگاری است که در NIST FIPS 180-4 به عنوان بزرگترین عضو خانواده SHA-2 تعریف شده است. این تابع ورودی با طول دلخواه را میپذیرد و یک digest ثابت ۵۱۲ بیتی (۶۴ بایتی) تولید میکند که به صورت یک رشته هگزادسیمال ۱۲۸ کاراکتری نمایش داده میشود. SHA-512 در امضاهای دیجیتال (Ed25519 به صورت داخلی از SHA-512 استفاده میکند)، ساختارهای HMAC، تأیید یکپارچگی فایل و پروتکلهای رمزنگاری که به حاشیه امنیتی گستردهتری نیاز دارند، به کار میرود.
SHA-512 روی بلوکهای ۱۰۲۴ بیتی (۱۲۸ بایتی) با حساب کلمات ۶۴ بیتی و ۸۰ دور فشردهسازی عمل میکند. هشت مقدار اولیه هش آن از بخشهای کسری جذر هشت عدد اول اول مشتق شدهاند و ۸۰ ثابت دور آن از ریشههای مکعبی ۸۰ عدد اول اول به دست میآیند. از آنجا که از عملیات بومی ۶۴ بیتی استفاده میکند، SHA-512 روی پردازندههای مدرن ۶۴ بیتی اغلب سریعتر از SHA-256 اجرا میشود، علیرغم تولید digest طولانیتر.
SHA-384، SHA-512/224 و SHA-512/256 همگی نوعهای کوتاهشده SHA-512 هستند که از همان ساختار داخلی استفاده میکنند اما مقادیر اولیه هش متفاوت دارند و بیتهای کمتری خروجی میدهند. هنگامی که به حداکثر طول digest در خانواده SHA-2 نیاز دارید، یا زمانی که یک پروتکل به صراحت SHA-512 را الزامی میکند (مانند Ed25519 یا برخی طرحهای استخراج کلید مبتنی بر HMAC)، SHA-512 انتخاب درست است. این تابع ۲۵۶ بیت مقاومت در برابر collision فراهم میکند که با SHA-3-512 برابری میکند و به مراتب از حد ۱۲۸ بیتی SHA-256 فراتر میرود.
چرا از تولیدکننده آنلاین SHA-512 استفاده کنیم؟
محاسبه هش SHA-512 معمولاً به یک دستور terminal یا چند خط کد نیاز دارد. این ابزار مبتنی بر مرورگر به شما امکان میدهد digest های SHA-512 را فوراً و بدون نصب نرمافزار، تغییر محیط، یا نوشتن اسکریپتهای موقت تولید کنید.
موارد استفاده از تولیدکننده هش SHA-512
مقایسه انواع خانواده SHA-2
SHA-512 به خانواده SHA-2 تعریف شده در FIPS 180-4 تعلق دارد. جدول زیر انواع SHA-2 که از معماری داخلی ۶۴ بیتی SHA-512 استفاده میکنند را در کنار SHA-256 برای مرجع مقایسه میکند.
| نوع | اندازه Digest | طول هگز | اندازه بایت | بهترین کاربرد |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS certificates, blockchain, JWTs, SRI |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | TLS 1.3 CertificateVerify, CNSA/Suite B |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC, Ed25519, file integrity |
| SHA-512/224 | 224 bits | 56 hex chars | 28 bytes | SHA-512 speed on 64-bit CPUs, 224-bit output |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-512 در برابر SHA-256 در برابر SHA-384 در برابر SHA-3-512
انتخاب الگوریتم هش مناسب به نیازهای امنیتی، محدودیتهای عملکرد و مشخصات پروتکل شما بستگی دارد. SHA-512 گستردهترین digest در خانواده SHA-2 را ارائه میدهد و روی سختافزار ۶۴ بیتی اغلب سریعتر از SHA-256 است. این مقایسه ویژگیهایی را که هنگام انتخاب بین آنها بیشترین اهمیت دارند پوشش میدهد.
| ویژگی | SHA-512 | SHA-256 | SHA-384 | SHA-3-512 |
|---|---|---|---|---|
| Digest size | 512 bits (128 hex) | 256 bits (64 hex) | 384 bits (96 hex) | 512 bits (128 hex) |
| Block size | 1024 bits | 512 bits | 1024 bits | 1600 bits (sponge) |
| Word size | 64 bits | 32 bits | 64 bits | N/A (sponge) |
| Rounds | 80 | 64 | 80 | 24 |
| Collision resistance | 2^256 operations | 2^128 operations | 2^192 operations | 2^256 operations |
| Security status | Secure | Secure | Secure | Secure |
| Standard | FIPS 180-4 | FIPS 180-4 | FIPS 180-4 | FIPS 202 |
| Web Crypto API | Yes | Yes | Yes | No |
| 64-bit optimized | Yes | No (32-bit words) | Yes | Yes |
| Primary use today | Ed25519, HMAC, file checksums | TLS, blockchain, SRI | TLS 1.3, CNSA | Backup standard |
نحوه عملکرد داخلی SHA-512
SHA-512 ورودی را از طریق ساختار Merkle–Damgård با بلوکهای ۱۰۲۴ بیتی پردازش میکند. هشت کلمه وضعیت ۶۴ بیتی (H0–H7) را از بخشهای کسری جذر هشت عدد اول اول مقداردهی اولیه میکند. هر بلوک از ۸۰ دور ترکیب عبور میکند که از عملیات بیتی (AND، XOR، NOT، چرخش راست، شیفت راست) روی کلمات ۶۴ بیتی به همراه ۸۰ ثابت دور از ریشههای مکعبی ۸۰ عدد اول اول استفاده میکند.
SHA-512: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f
989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
(512 bits = 64 bytes = 128 hex characters)
| مرحله | توضیح |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 896 mod 1024. Append the original length as a 128-bit big-endian integer. |
| Block splitting | Divide the padded message into 1024-bit (128-byte) blocks. |
| Message schedule | Expand each 16-word (64-bit) block into 80 words using sigma functions with right-rotate and right-shift operations on 64-bit values. |
| Compression | Process 80 rounds per block using Ch, Maj, and two Sigma functions with 80 round constants derived from the cube roots of the first 80 primes. |
| Output | Concatenate the eight 64-bit state words (H0–H7) into a 512-bit (64-byte) digest, rendered as 128 hexadecimal characters. |
اندازه کلمه ۶۴ بیتی گستردهتر، تفاوت اصلی با SHA-256 است. روی CPUهای ۶۴ بیتی، هر عملیات دو برابر بیتهای بیشتری را در هر چرخه پردازش میکند، به همین دلیل است که SHA-512 در benchmark ها اغلب از SHA-256 پیشی میگیرد علیرغم اینکه ۸۰ دور به جای ۶۴ دور اجرا میکند. اثر بهمنی تضمین میکند که تغییر یک بیت ورودی تقریباً ۵۰٪ از تمام ۵۱۲ بیت خروجی را تغییر میدهد.
نمونه کدهای SHA-512
SHA-512 به صورت بومی در تمام زبانها و runtime های اصلی پشتیبانی میشود. Web Crypto API آن را در مرورگرها بدون هیچ کتابخانهای فراهم میکند. نمونههای زیر الگوهای رایج شامل مدیریت Unicode و هشسازی فایل را پوشش میدهند.
// Works in all modern browsers and Node.js 18+
async function sha512(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-512', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha512('hello world')
// → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha512').update('hello world').digest('hex')
// → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f"import hashlib
# Basic SHA-512 hash
result = hashlib.sha512(b'hello world').hexdigest()
print(result)
# → "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee..."
# Hash a string with Unicode (encode to bytes first)
text = 'café ☕'
hashlib.sha512(text.encode('utf-8')).hexdigest()
# → 128-character hex string
# Hash a large file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha512()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha512"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha512.Sum512(data)
fmt.Printf("%x\n", hash)
// → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f...
}# Using sha512sum (Linux) or shasum (macOS) echo -n "hello world" | sha512sum # → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee... - # macOS echo -n "hello world" | shasum -a 512 # → 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee... - # Verify a file checksum echo "309ecc48... myfile.bin" | sha512sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha512 # → SHA2-512(stdin)= 309ecc489c12d6eb4cc40f50c902f2b4...