Trình tạo Hash SHA-512
Tạo hash SHA-512 từ bất kỳ văn bản nào
Văn bản nhập
Hash SHA-512
Hash SHA-512 sẽ xuất hiện ở đây…
SHA-512 Hashing là gì?
SHA-512 là hàm băm mật mã được định nghĩa trong NIST FIPS 180-4 là thành viên lớn nhất của họ SHA-2. Hàm này chấp nhận đầu vào có độ dài tùy ý và tạo ra message digest cố định 512-bit (64 byte), hiển thị dưới dạng chuỗi thập lục phân 128 ký tự. SHA-512 được sử dụng trong chữ ký số (Ed25519 dùng SHA-512 nội bộ), cấu trúc HMAC, kiểm tra tính toàn vẹn tệp và các giao thức mật mã cần biên độ bảo mật rộng.
SHA-512 xử lý trên các khối 1024-bit (128 byte) sử dụng phép toán từ 64-bit và 80 vòng nén. Tám giá trị băm ban đầu được dẫn xuất từ phần thập phân của căn bậc hai của 8 số nguyên tố đầu tiên, và 80 hằng số vòng đến từ căn bậc ba của 80 số nguyên tố đầu tiên. Vì sử dụng các phép toán 64-bit gốc, SHA-512 thường nhanh hơn SHA-256 trên các bộ xử lý 64-bit hiện đại, dù tạo ra digest dài hơn.
SHA-384, SHA-512/224 và SHA-512/256 đều là các biến thể rút gọn của SHA-512, chia sẻ cùng cấu trúc nội bộ nhưng dùng các giá trị băm ban đầu khác nhau và xuất ra ít bit hơn. Khi cần độ dài digest tối đa mà họ SHA-2 cung cấp, hoặc khi giao thức yêu cầu SHA-512 (như Ed25519 hoặc một số sơ đồ dẫn xuất khóa dựa trên HMAC), SHA-512 là lựa chọn phù hợp. Nó cung cấp 256-bit kháng va chạm, tương đương SHA-3-512 và vượt xa giới hạn 128-bit của SHA-256.
Tại sao dùng công cụ tạo SHA-512 trực tuyến?
Thông thường, tính toán hash SHA-512 đòi hỏi lệnh terminal hoặc vài dòng code. Công cụ trên trình duyệt này cho phép bạn tạo digest SHA-512 ngay lập tức mà không cần cài đặt phần mềm, chuyển sang terminal hay viết script tạm.
Các trường hợp sử dụng công cụ tạo Hash SHA-512
So sánh các biến thể họ SHA-2
SHA-512 thuộc họ SHA-2 được định nghĩa trong FIPS 180-4. Bảng dưới đây so sánh các biến thể SHA-2 chia sẻ kiến trúc nội bộ 64-bit của SHA-512, cùng với SHA-256 để tham chiếu.
| Biến thể | Kích thước Digest | Độ dài Hex | Kích thước Byte | Phù hợp nhất cho |
|---|---|---|---|---|
| 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 vs SHA-256 vs SHA-384 vs SHA-3-512
Thuật toán băm phù hợp phụ thuộc vào yêu cầu bảo mật, ràng buộc hiệu suất và đặc tả giao thức của bạn. SHA-512 cung cấp digest rộng nhất trong họ SHA-2 và thường nhanh hơn SHA-256 trên phần cứng 64-bit. Bảng so sánh này bao gồm các thuộc tính quan trọng nhất khi lựa chọn giữa chúng.
| Thuộc tính | 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 hoạt động bên trong như thế nào?
SHA-512 xử lý đầu vào qua cấu trúc Merkle–Damgård sử dụng các khối 1024-bit. Hàm khởi tạo tám từ trạng thái 64-bit (H0–H7) từ phần thập phân của căn bậc hai của 8 số nguyên tố đầu tiên. Mỗi khối qua 80 vòng trộn sử dụng các phép toán bitwise (AND, XOR, NOT, xoay phải, dịch phải) trên các từ 64-bit, kết hợp với 80 hằng số vòng từ căn bậc ba của 80 số nguyên tố đầu tiên.
SHA-512: 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f
989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
(512 bits = 64 bytes = 128 hex characters)
| Bước | Mô tả |
|---|---|
| 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. |
Kích thước từ 64-bit là điểm khác biệt chính so với SHA-256. Trên CPU 64-bit, mỗi phép toán xử lý gấp đôi số bit mỗi chu kỳ, đó là lý do SHA-512 thường vượt trội SHA-256 trong benchmark dù chạy 80 vòng thay vì 64. Hiệu ứng tuyết lở đảm bảo rằng lật một bit đầu vào sẽ thay đổi khoảng 50% tổng số 512 bit đầu ra.
Ví dụ code SHA-512
SHA-512 được hỗ trợ nguyên bản trong mọi ngôn ngữ và môi trường thực thi chính. Web Crypto API cung cấp nó trong trình duyệt mà không cần thư viện nào. Các ví dụ dưới đây bao gồm các mẫu phổ biến bao gồm xử lý Unicode và băm tệp.
// 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...