Trình tạo Hash SHA-384

Tạo hash SHA-384 từ bất kỳ văn bản nào

Văn bản nhập

Chạy cục bộ · An toàn để dán thông tin bí mật

Hash SHA-384

Hash SHA-384 sẽ xuất hiện ở đây…

SHA-384 Hashing là gì?

SHA-384 là hàm băm mật mã được định nghĩa trong NIST FIPS 180-4 thuộc 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 384-bit (48 byte), thường hiển thị dưới dạng chuỗi thập lục phân 96 ký tự. SHA-384 được sử dụng rộng rãi trong các bộ mã hóa TLS, chữ ký chứng chỉ số và các hệ thống chính phủ đòi hỏi biên độ kháng va chạm cao hơn so với SHA-256.

Về mặt nội bộ, SHA-384 là một biến thể rút gọn của SHA-512. Hàm này sử dụng cùng kích thước khối 1024-bit, 80 vòng nén và phép toán từ 64-bit như SHA-512, nhưng khởi tạo với một tập giá trị băm ban đầu khác (dẫn xuất từ các số nguyên tố thứ 9 đến thứ 16) và chỉ xuất ra 384-bit đầu tiên của trạng thái cuối. Sự rút gọn này có nghĩa là SHA-384 tạo ra digest khác với SHA-512 cho cùng một đầu vào, dù chia sẻ cùng thuật toán lõi.

Vì SHA-384 hoạt động trên các từ 64-bit, hàm này chạy nhanh hơn SHA-256 trên các bộ xử lý 64-bit hiện đại trong khi tạo ra digest lớn hơn. Điều này tạo nên một điểm cân bằng thực tế: mạnh hơn SHA-256 (kháng va chạm 192-bit so với 128-bit) mà không có chi phí lưu trữ của đầu ra hex 128 ký tự của SHA-512. SHA-384 là hàm băm mặc định cho chữ ký xác minh chứng chỉ TLS 1.3 và được yêu cầu bởi NSA Suite B (nay là CNSA) cho dữ liệu TỐI MẬT.

Tại sao dùng công cụ tạo SHA-384 trực tuyến?

Thông thường, tạo giá trị băm SHA-384 đòi hỏi lệnh terminal hoặc viết code. Công cụ trên trình duyệt này cho phép bạn tính toán digest SHA-384 ngay lập tức mà không cần cài đặt bất cứ thứ gì hoặc gửi dữ liệu đến máy chủ. Dù bạn cần tạo hash SRI cho tài nguyên CDN, xác minh checksum tệp hay so sánh đầu ra SHA-384 với SHA-256 cho cùng một đầu vào, công cụ này cung cấp cách làm việc với digest SHA-384 ngay lập tức, không phụ thuộc vào thư viện bên ngoài.

Tính toán tức thì trong trình duyệt
Dán văn bản và nhận hash SHA-384 gồm 96 ký tự ngay lập tức. Web Crypto API xử lý phép tính trực tiếp trong trình duyệt của bạn mà không cần phụ thuộc vào thư viện bên ngoài.
🔒
Băm ưu tiên quyền riêng tư
Dữ liệu đầu vào của bạn không bao giờ rời khỏi thiết bị. Toàn bộ quá trình băm chạy cục bộ qua Web Crypto API — không có yêu cầu đến máy chủ, không ghi nhật ký, không lưu giữ dữ liệu.
📋
Định dạng đầu ra sẵn sàng để sao chép
Chuyển đổi giữa đầu ra hex chữ thường và chữ hoa chỉ với một cú nhấp. Sao chép hash vào clipboard để sử dụng trong tệp checksum, cấu hình hoặc tài liệu.
🔍
Không cần tài khoản hay cài đặt
Hoạt động trên mọi trình duyệt hiện đại — Chrome, Firefox, Safari, Edge. Không cần đăng ký, không cần tiện ích mở rộng, không cần thiết lập CLI.

Các trường hợp sử dụng công cụ tạo Hash SHA-384

Xác minh chứng chỉ TLS
TLS 1.2 và 1.3 sử dụng SHA-384 trong xác minh chữ ký chứng chỉ và PRF (hàm giả ngẫu nhiên). Tính toán digest SHA-384 để xác thực dấu vân tay chứng chỉ so với giá trị kỳ vọng trong quá trình kiểm tra bảo mật.
Subresource Integrity (SRI)
Tạo hash SHA-384 cho các tệp JavaScript và CSS được tải từ CDN. Thuộc tính integrity trong thẻ script và link sử dụng SHA-384 mã hóa Base64 theo mặc định trong hầu hết các công cụ tạo SRI.
Hệ thống chính phủ và tuân thủ quy định
CNSA (trước đây là NSA Suite B) bắt buộc sử dụng SHA-384 để bảo vệ thông tin mật. Tạo hash để xác minh tính toàn vẹn tài liệu trong các quy trình tuân thủ yêu cầu thuật toán FIPS 180-4.
Kiểm tra tính toàn vẹn tệp
Tính toán checksum SHA-384 cho các ảnh firmware, bản phát hành phần mềm hoặc tệp cấu hình. So sánh hash trước và sau khi truyền để phát hiện dữ liệu bị hỏng hoặc bị giả mạo.
Dẫn xuất khóa HMAC-SHA384
SHA-384 kết hợp với HMAC để xác thực thông điệp trong các giao thức như IPsec và TLS. Dùng công cụ này để xác minh đầu ra hash kỳ vọng khi gỡ lỗi các triển khai HMAC-SHA384.
Bài tập mật mã học học thuật
Sinh viên nghiên cứu họ SHA-2 có thể so sánh đầu ra SHA-384 với SHA-256 và SHA-512 cho cùng một đầu vào để quan sát cách các vector khởi tạo khác nhau và sự rút gọn tạo ra các digest riêng biệt.

So sánh các biến thể họ SHA-2

SHA-384 thuộc họ SHA-2 cùng với nhiều biến thể khác. Bảng dưới đây cho thấy chúng khác nhau như thế nào về kích thước digest, độ dài đầu ra và các ứng dụng điển hình.

Biến thểDigestĐộ dài HexBytePhù hợp nhất cho
SHA-384384 bits96 hex chars48 bytesTLS 1.2/1.3, government/CNSA, certificate signatures
SHA-256256 bits64 hex chars32 bytesTLS, blockchain, code signing, JWTs, SRI
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC with large keys
SHA-224224 bits56 hex chars28 bytesTruncated SHA-256 — rare, specific compliance
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-384 so với SHA-256 vs SHA-512 vs SHA-3-384

Việc lựa chọn giữa SHA-384 và các thuật toán băm khác phụ thuộc vào yêu cầu bảo mật, ràng buộc nền tảng và nhu cầu hiệu suất của bạn. Bảng so sánh này bao gồm các thuộc tính quan trọng nhất.

Thuộc tínhSHA-384SHA-256SHA-512SHA-3-384
Digest size384 bits (96 hex)256 bits (64 hex)512 bits (128 hex)384 bits (96 hex)
Internal state512 bits (8x64-bit)256 bits (8x32-bit)512 bits (8x64-bit)1600 bits (sponge)
Block size1024 bits512 bits1024 bits832 bits
Rounds80648024
Word size64 bits32 bits64 bitsN/A (sponge)
Length extensionResistantVulnerableVulnerableResistant
64-bit performanceFast (native ops)Slower (32-bit ops)Fast (native ops)Moderate
StandardFIPS 180-4FIPS 180-4FIPS 180-4FIPS 202
Web Crypto APIYesYesYesNo

SHA-384 hoạt động bên trong như thế nào?

SHA-384 xử lý đầu vào thông qua cấu trúc Merkle–Damgård giống như SHA-512. Đầu vào được đệm thành bội số của 1024-bit, chia thành các khối, và mỗi khối được xử lý qua 80 vòng trộn sử dụng các hàm Ch, Maj và hai hàm Sigma với phép toán từ 64-bit. Điểm khác biệt chính so với SHA-512 là các giá trị băm ban đầu: SHA-384 sử dụng các giá trị dẫn xuất từ phần thập phân của căn bậc hai của các số nguyên tố thứ 9 đến thứ 16, trong khi SHA-512 sử dụng 8 số nguyên tố đầu tiên. Sau khi xử lý tất cả các khối, SHA-384 rút gọn trạng thái nội bộ 512-bit xuống còn 384-bit đầu tiên.

Input: "hello world"
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)

Sự rút gọn và khởi tạo khác nhau có nghĩa là SHA-384 và SHA-512 luôn tạo ra các digest khác nhau cho cùng một đầu vào. Điều này cũng khiến SHA-384 vốn dĩ kháng các cuộc tấn công mở rộng độ dài, không giống SHA-256 và SHA-512 nơi kẻ tấn công có thể thêm dữ liệu và tính toán hash hợp lệ mà không cần biết thông điệp gốc.

Ví dụ code SHA-384

SHA-384 được hỗ trợ nguyên bản trong tất cả các ngôn ngữ và môi trường thực thi chính. Dưới đây là các ví dụ hoạt động mà bạn có thể sao chép trực tiếp vào dự án của mình.

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha384(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-384', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha384('hello world')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha384').update('hello world').digest('hex')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"
Python
import hashlib

# Basic SHA-384 hash
result = hashlib.sha384(b'hello world').hexdigest()
print(result)
# → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"

# Hash a string with Unicode characters
text = 'café ☕'
hashlib.sha384(text.encode('utf-8')).hexdigest()
# → 96-character hex string

# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha384()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha512"
    "fmt"
)

func main() {
    data := []byte("hello world")
    // SHA-384 lives in the crypto/sha512 package
    hash := sha512.Sum384(data)
    fmt.Printf("%x\n", hash)
    // → fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
}
CLI (Linux / macOS)
# Using sha384sum (Linux)
echo -n "hello world" | sha384sum
# → fdbd8e75a67f29f701a4e040385e2e23...  -

# macOS
echo -n "hello world" | shasum -a 384
# → fdbd8e75a67f29f701a4e040385e2e23...  -

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha384
# → SHA2-384(stdin)= fdbd8e75a67f29f701a4e040385e2e23986303ea...

# Verify a file checksum
sha384sum myfile.bin > checksum.txt
sha384sum -c checksum.txt
# → myfile.bin: OK

Câu hỏi thường gặp

Sự khác biệt giữa SHA-384 và SHA-512 là gì?
SHA-384 và SHA-512 sử dụng cùng hàm nén, kích thước khối (1024-bit) và số vòng (80). Chúng khác nhau ở hai điểm: SHA-384 bắt đầu với các giá trị băm ban đầu khác (dẫn xuất từ các số nguyên tố 9–16 thay vì 1–8), và chỉ xuất ra 384-bit đầu tiên của trạng thái nội bộ 512-bit. Điều này có nghĩa là chúng luôn tạo ra các digest khác nhau cho cùng một đầu vào.
SHA-384 có an toàn hơn SHA-256 không?
SHA-384 cung cấp khả năng kháng va chạm 192-bit so với 128-bit của SHA-256, dựa trên giới hạn tấn công birthday bằng nửa độ dài digest. Đối với khả năng kháng tiền ảnh, SHA-384 cung cấp 384-bit so với 256-bit. Trong thực tế, cả hai đều được coi là an toàn cho các mô hình mối đe dọa hiện tại, nhưng SHA-384 cung cấp biên độ an toàn lớn hơn cho bảo vệ dữ liệu dài hạn và được yêu cầu bởi một số tiêu chuẩn chính phủ.
Tại sao TLS dùng SHA-384 thay vì SHA-512?
Các bộ mã hóa TLS như TLS_AES_256_GCM_SHA384 sử dụng SHA-384 vì nó cung cấp khả năng kháng va chạm đủ (192-bit) trong khi giữ kích thước digest có thể quản lý được. Đầu ra hex 128 ký tự của SHA-512 tăng thêm chi phí trong các thông điệp bắt tay và chuỗi chứng chỉ mà không mang lại lợi ích bảo mật tương xứng cho trường hợp sử dụng của TLS. SHA-384 cũng phù hợp với mức bảo mật 192-bit mà AES-256 hướng tới.
SHA-384 được sử dụng trong Subresource Integrity (SRI) như thế nào?
Thẻ SRI trong HTML sử dụng định dạng integrity="sha384-{base64hash}" để xác minh rằng các script và stylesheet được tải từ CDN chưa bị sửa đổi. Trình duyệt tính toán hash SHA-384 của tệp đã tải xuống và so sánh với giá trị kỳ vọng. Nếu chúng không khớp, tài nguyên sẽ bị chặn. SHA-384 là thuật toán được sử dụng phổ biến nhất cho SRI vì nó cân bằng giữa bảo mật và kích thước digest.
SHA-384 có thể bị đảo ngược để khôi phục đầu vào gốc không?
Không. SHA-384 là hàm một chiều theo thiết kế. Hàm này có 384-bit kháng tiền ảnh, nghĩa là không có phương pháp đã biết nào để khôi phục đầu vào từ digest SHA-384 nhanh hơn tìm kiếm brute-force qua 2^384 khả năng. Tuy nhiên, các đầu vào ngắn hoặc dễ đoán (như mật khẩu phổ biến) có thể được tìm thấy bằng bảng rainbow được tính trước hoặc tấn công từ điển, đó là lý do tại sao mật khẩu nên được băm với các thuật toán chuyên dụng như bcrypt hoặc Argon2.
SHA-384 có được hỗ trợ trong Web Crypto API không?
Có. Tất cả các trình duyệt hiện đại triển khai SHA-384 thông qua crypto.subtle.digest('SHA-384', data). Đây là API được công cụ này sử dụng. Nó cũng có sẵn trong Node.js 18+ và Deno. Web Crypto API trả về một ArrayBuffer mà bạn chuyển đổi thành chuỗi hex bằng cách ánh xạ mỗi byte sang biểu diễn thập lục phân hai ký tự tương ứng.
Khi nào nên dùng SHA-384 thay vì SHA-256?
Dùng SHA-384 khi chính sách bảo mật của bạn yêu cầu hơn 128-bit kháng va chạm, khi bạn cần tuân thủ CNSA/Suite B cho dữ liệu mật, hoặc khi bạn đang dùng AES-256 và muốn mức bảo mật 192-bit tương ứng. SHA-384 cũng chạy nhanh hơn SHA-256 trên bộ xử lý 64-bit vì sử dụng các phép toán từ 64-bit gốc. Đối với hầu hết các ứng dụng web và băm mục đích chung, SHA-256 vẫn là lựa chọn tiêu chuẩn.