เครื่องสร้างแฮช SHA-384
สร้างแฮช SHA-384 จากข้อความใด ๆ
ข้อความอินพุต
แฮช SHA-384
แฮช SHA-384 จะแสดงที่นี่…
SHA-384 Hashing คืออะไร?
SHA-384 เป็นฟังก์ชันแฮชเข้ารหัสลับที่กำหนดไว้ใน NIST FIPS 180-4 ในฐานะส่วนหนึ่งของตระกูล SHA-2 รับอินพุตที่มีความยาวเท่าใดก็ได้และสร้าง message digest ขนาดคงที่ 384 บิต (48 ไบต์) ซึ่งโดยปกติแสดงเป็นสตริงตัวอักษรฐานสิบหก 96 ตัว SHA-384 ถูกใช้งานอย่างแพร่หลายใน TLS cipher suite, ลายเซ็นใบรับรองดิจิทัล และระบบของหน่วยงานรัฐบาลที่ต้องการความทนทานต่อ collision สูงกว่าที่ SHA-256 ให้ได้
ภายใน SHA-384 เป็นตัวแปรที่ถูกตัดทอนของ SHA-512 ใช้ขนาดบล็อก 1024 บิต, 80 รอบการบีบอัด และการคำนวณแบบเวิร์ด 64 บิตเหมือนกับ SHA-512 แต่เริ่มต้นด้วยชุดค่าแฮชเริ่มต้นที่แตกต่างกัน (ได้จากจำนวนเฉพาะที่ 9 ถึง 16) และส่งออกเพียง 384 บิตแรกของสถานะสุดท้าย การตัดทอนนี้ทำให้ SHA-384 สร้าง digest ที่แตกต่างจาก SHA-512 สำหรับอินพุตเดียวกัน แม้จะใช้อัลกอริทึมหลักเดียวกัน
เนื่องจาก SHA-384 ทำงานบนเวิร์ด 64 บิต จึงทำงานเร็วกว่า SHA-256 บนโปรเซสเซอร์ 64 บิตสมัยใหม่ในขณะที่ให้ digest ขนาดใหญ่กว่า ทำให้เป็นตัวเลือกกลางที่ใช้งานได้จริง: แข็งแกร่งกว่า SHA-256 (ความทนทานต่อ collision 192 บิต เทียบกับ 128 บิต) โดยไม่มีภาระในการจัดเก็บของเอาต์พุต hex 128 ตัวของ SHA-512 SHA-384 เป็นแฮชเริ่มต้นสำหรับลายเซ็นการยืนยันใบรับรอง TLS 1.3 และเป็นข้อกำหนดของ NSA Suite B (ปัจจุบันคือ CNSA) สำหรับข้อมูลลับสุดยอด
ทำไมต้องใช้เครื่องสร้าง SHA-384 ออนไลน์?
การสร้างแฮช SHA-384 มักต้องใช้คำสั่ง terminal หรือเขียนโค้ด เครื่องมือในเบราว์เซอร์นี้ให้คุณคำนวณ SHA-384 digest ได้ทันทีโดยไม่ต้องติดตั้งอะไรหรือส่งข้อมูลไปยังเซิร์ฟเวอร์ ไม่ว่าจะสร้างแฮช SRI สำหรับทรัพยากร CDN, ตรวจสอบ checksum ไฟล์ หรือเปรียบเทียบผลลัพธ์ SHA-384 กับ SHA-256 สำหรับอินพุตเดียวกัน เครื่องมือนี้ให้วิธีทำงานกับ SHA-384 digest ได้ทันทีโดยไม่ต้องพึ่งพา dependency ใด ๆ ในเบราว์เซอร์สมัยใหม่
กรณีการใช้งานเครื่องสร้างแฮช SHA-384
การเปรียบเทียบตัวแปรในตระกูล SHA-2
SHA-384 อยู่ในตระกูล SHA-2 ร่วมกับตัวแปรอื่น ๆ อีกหลายตัว ตารางด้านล่างแสดงความแตกต่างในด้านขนาด digest, ความยาวเอาต์พุต และการใช้งานทั่วไป
| ตัวแปร | ขนาด Digest | ความยาว Hex | ขนาดไบต์ | เหมาะสำหรับ |
|---|---|---|---|---|
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | TLS 1.2/1.3, government/CNSA, certificate signatures |
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-384 เทียบกับ SHA-256, SHA-512 และ SHA-3-384
การเลือกระหว่าง SHA-384 กับอัลกอริทึมแฮชอื่น ๆ ขึ้นอยู่กับข้อกำหนดด้านความปลอดภัย ข้อจำกัดของแพลตฟอร์ม และความต้องการด้านประสิทธิภาพ การเปรียบเทียบนี้ครอบคลุมคุณสมบัติที่เกี่ยวข้องมากที่สุด
| คุณสมบัติ | SHA-384 | SHA-256 | SHA-512 | SHA-3-384 |
|---|---|---|---|---|
| Digest size | 384 bits (96 hex) | 256 bits (64 hex) | 512 bits (128 hex) | 384 bits (96 hex) |
| Internal state | 512 bits (8x64-bit) | 256 bits (8x32-bit) | 512 bits (8x64-bit) | 1600 bits (sponge) |
| Block size | 1024 bits | 512 bits | 1024 bits | 832 bits |
| Rounds | 80 | 64 | 80 | 24 |
| Word size | 64 bits | 32 bits | 64 bits | N/A (sponge) |
| Length extension | Resistant | Vulnerable | Vulnerable | Resistant |
| 64-bit performance | Fast (native ops) | Slower (32-bit ops) | Fast (native ops) | Moderate |
| Standard | FIPS 180-4 | FIPS 180-4 | FIPS 180-4 | FIPS 202 |
| Web Crypto API | Yes | Yes | Yes | No |
SHA-384 ทำงานภายในอย่างไร
SHA-384 ประมวลผลอินพุตผ่านโครงสร้าง Merkle–Damgård แบบเดียวกับ SHA-512 อินพุตถูกเพิ่ม padding ให้เป็นจำนวนเท่าของ 1024 บิต แบ่งเป็นบล็อก และแต่ละบล็อกถูกประมวลผลผ่าน 80 รอบของการผสมโดยใช้ฟังก์ชัน Ch, Maj และ Sigma สองตัวพร้อมการคำนวณแบบเวิร์ด 64 บิต ความแตกต่างหลักจาก SHA-512 คือค่าแฮชเริ่มต้น: SHA-384 ใช้ค่าที่ได้จากส่วนทศนิยมของรากที่สองของจำนวนเฉพาะที่ 9 ถึง 16 ในขณะที่ SHA-512 ใช้จำนวนเฉพาะ 8 ตัวแรก หลังจากประมวลผลบล็อกทั้งหมดแล้ว SHA-384 ตัดสถานะภายใน 512 บิตเหลือเพียง 384 บิตแรก
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)
การตัดทอนและการกำหนดค่าเริ่มต้นที่แตกต่างกันทำให้ SHA-384 และ SHA-512 สร้าง digest ที่แตกต่างกันเสมอสำหรับอินพุตเดียวกัน ซึ่งยังทำให้ SHA-384 ทนทานต่อ length-extension attack โดยธรรมชาติ ต่างจาก SHA-256 และ SHA-512 ที่ผู้โจมตีสามารถต่อข้อมูลและคำนวณแฮชที่ถูกต้องโดยไม่รู้ข้อความเดิม
ตัวอย่างโค้ด SHA-384
SHA-384 รองรับโดยตรงในทุกภาษาและ runtime หลัก ตัวอย่างด้านล่างใช้งานได้จริงและสามารถคัดลอกไปใช้ในโปรเจกต์ของคุณได้ทันที
// 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"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())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
}# 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