วิธีใช้งาน
- ป้อนข้อความหรือไบต์เลขฐานสิบหก หรือคลิก “เปิดไฟล์” เพื่อแฮชเนื้อหาของไฟล์
- เลือก “รูปแบบเอาต์พุต” โดยใช้ hex สำหรับเช็กซัมแบบ sha512sum หรือ Base64 สำหรับสตริง integrity
- วางค่าที่คาดไว้ลงในช่อง “เปรียบเทียบกับ” เพื่อตรวจสอบ รองรับทั้งเลขฐานสิบหกและ Base64
- ต้องการ SHA-384 ใช่ไหม เลือกได้ที่ “อัลกอริทึม” หรือคัดลอกจากตาราง “อัลกอริทึมทั้งหมด”
SHA-512 คืออะไร
SHA-512 คือฟังก์ชัน SHA-2 ที่มีเอาต์พุตยาวที่สุด กำหนดไว้ใน FIPS 180-4 และ RFC 6234 ในขณะที่ SHA-256 ทำงานกับเวิร์ดขนาด 32 บิต SHA-512 ใช้เวิร์ดขนาด 64 บิต บล็อกขนาด 1024 บิต และ 80 รอบ แล้วให้ไดเจสต์ขนาด 512 บิต คือเลขฐานสิบหก 128 อักขระหรือ Base64 88 อักขระ ความทนทานต่อการชนกันราว 256 บิตนั้นเหนือกว่าการโจมตีใด ๆ ที่คาดการณ์ได้ไปมาก และเช่นเดียวกับแฮชทุกชนิด SHA-512 เป็นฟังก์ชันทางเดียว ไม่สามารถกู้อินพุตคืนจากไดเจสต์ได้
เนื่องจากใช้การคำนวณแบบ 64 บิต SHA-512 จึงมักเร็วกว่า SHA-256 ต่อไบต์บนโปรเซสเซอร์ 64 บิตที่ไม่มีชุดคำสั่งสำหรับ SHA-256 โดยเฉพาะ แต่บน CPU ที่มีชุดคำสั่งดังกล่าว SHA-256 มักจะเร็วกว่า
SHA-384, SHA-512/256 และรูปแบบตัดสั้นอื่น ๆ
แฮชมาตรฐานหลายตัวคือ SHA-512 ที่ใช้ค่าตั้งต้นต่างกันและตัดเอาต์พุตให้สั้นลง:
| ชื่อ | เอาต์พุต | ความยาวเลขฐานสิบหก | การใช้งานทั่วไป |
|---|---|---|---|
| SHA-384 | 384 บิต | 96 | ชุดการเข้ารหัสลับ (cipher suite) ของ TLS 1.3, Subresource Integrity |
| SHA-512/256 | 256 บิต | 64 | เอาต์พุตขนาดเท่า SHA-256 ด้วยความเร็วของ SHA-512 |
| SHA-512/224 | 224 บิต | 56 | ไม่ค่อยมีการใช้งาน |
เพราะค่าตั้งต้นต่างกัน SHA-512/256 จึงไม่ใช่เลขฐานสิบหก 64 อักขระแรกของ SHA-512 รูปแบบตัดสั้นยังต้านทานการโจมตีแบบขยายความยาว (length extension) ที่ส่งผลต่อ SHA-256 และ SHA-512 แบบเต็มได้ด้วย หน้านี้คำนวณ SHA-384 และ SHA-512 หากต้องการ SHA-512/256 ให้ใช้เครื่องมืออื่น เช่น openssl dgst -sha512-256
สตริง integrity แบบ Base64 และแฮชรหัสผ่าน
เนื่องจากรูปแบบเลขฐานสิบหกยาวมาก รูปแบบข้อมูลที่ออกแบบให้เครื่องอ่านจึงมักเก็บ SHA-512 เป็น Base64 Subresource Integrity รับค่า sha256-, sha384- และ sha512- ตามด้วยไดเจสต์ Base64 และไฟล์ package-lock.json ของ npm เก็บค่า integrity ของแต่ละแพ็กเกจ ซึ่งมักขึ้นต้นด้วย sha512- ให้เปิดไฟล์ เลือกเอาต์พุตเป็น Base64 แล้วเติมตัวนำหน้า
แฮชรหัสผ่านของ Linux ที่ขึ้นต้นด้วย $6$ คือ sha512crypt ซึ่งเป็น SHA-512 ที่ใช้ salt และทำซ้ำหลายพันรอบ จึงไม่มีทางเท่ากับ SHA-512 ธรรมดาของรหัสผ่าน การแฮชรหัสผ่านด้วย SHA-512 เพียงครั้งเดียวถูกโจมตีแบบ brute force ได้รวดเร็วไม่ว่าไดเจสต์จะยาวเพียงใด ให้จัดเก็บรหัสผ่านด้วย Argon2id, scrypt, bcrypt หรือ PBKDF2-HMAC-SHA512
SHA-512 ในบรรทัดคำสั่งและในโค้ด
sha512sum file.tar.gz # Linux
shasum -a 512 file.tar.gz # macOS
certutil -hashfile file.tar.gz SHA512 # Windows
Get-FileHash file.tar.gz -Algorithm SHA512 # PowerShell
# ไดเจสต์ Base64 สำหรับแอตทริบิวต์ integrity
openssl dgst -sha512 -binary file.js | openssl base64 -A
# Python
hashlib.sha512(data).hexdigest()
// Node.js
crypto.createHash('sha512').update(data).digest('base64')
ในหน้านี้ SHA-512 คำนวณโดย Web Crypto API ในเบราว์เซอร์ของคุณ และตาราง “อัลกอริทึมทั้งหมด” จะแสดงค่า SHA-384, SHA-256, SHA-1, MD5 และ CRC ของอินพุตเดียวกัน
ตัวอย่าง
| อินพุต (UTF-8) | SHA-512 |
|---|---|
Hello, World! | 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387 |
Base64.is | 44960f483bc929874301e2fb54f4337c84641ad12cb6b2639875e26e490664e65da046cf43eafb2ab4a47b5d3eb66637630af5cba841974bfaa4e372dd0453d2 |
你好 | 5232181bc0d9888f5c9746e410b4740eb461706ba5dacfbc93587cecfc8d068bac7737e92870d6745b11a25e9cd78b55f4ffc706f73cfcae5345f1b53fb8f6b5 |
คำถามที่พบบ่อย
SHA-512 ปลอดภัยกว่า SHA-256 หรือไม่
SHA-512 มีระยะเผื่อความปลอดภัยมากกว่า คือทนทานต่อการชนกันราว 256 บิต เทียบกับ 128 บิตของ SHA-256 แต่ทั้งสองยังไม่ถูกเจาะและเหนือกว่าการโจมตีแบบ brute force ไปมาก เลือก SHA-512 เมื่อรูปแบบข้อมูลกำหนดไว้ เมื่อทำงานได้เร็วกว่าบนฮาร์ดแวร์ของคุณ หรือเมื่อต้องการไดเจสต์ที่ยาวขึ้น นอกเหนือจากนั้น SHA-256 ก็เพียงพอ
ถอดรหัสแฮช SHA-512 ได้หรือไม่
ไม่ได้ ไดเจสต์ SHA-512 มีขนาด 64 ไบต์เสมอ ไม่ว่าอินพุตจะเป็นคำเดียวหรืออิมเมจของดิสก์ทั้งลูก อินพุตที่ต่างกันจำนวนนับไม่ถ้วนจึงให้ไดเจสต์ค่าเดียวกัน และไม่มีอะไรให้ถอดรหัส ไดเจสต์ทำได้เพียงนำไปเทียบกับแฮชของค่าที่เดา เว็บไซต์ค้นหาแฮชใช้วิธีนี้หาคำและรหัสผ่านที่ใช้กันทั่วไป แต่ไม่มีทางหาข้อมูลที่คาดเดาไม่ได้
แฮช SHA-512 ยาวเท่าใด
== SHA3-512, BLAKE2b และ Whirlpool มีความยาวเท่ากัน จึงควรวางไดเจสต์ที่ไม่ทราบชนิดลงในเครื่องมือระบุชนิดแฮชเพื่อดูว่าอัลกอริทึมใดบ้างที่เป็นไปได้SHA-512 กับ SHA3-512 เหมือนกันหรือไม่
ไม่เหมือน SHA3-512 (FIPS 202) อิงกับ Keccak ซึ่งเป็นการออกแบบที่แตกต่างโดยสิ้นเชิง และให้ไดเจสต์ต่างกันสำหรับอินพุตเดียวกัน หน้านี้ไม่ได้คำนวณ SHA-3
ทำไมสตริงสองชุดที่ดูเหมือนกันจึงให้แฮชต่างกัน
แฮชคำนวณจากไบต์ อักขระอย่าง é อาจจัดเก็บเป็นโค้ดพอยต์เดียว หรือเป็น e ตามด้วยเครื่องหมายเน้นเสียงแบบผสม และช่องว่างต่อท้าย การจบบรรทัด (LF หรือ CRLF) รวมถึงชุดอักขระ (UTF-8, UTF-16, Windows-1252) ก็ทำให้ไบต์เปลี่ยนไปด้วย ให้เลือก “การเข้ารหัสอักขระ” ให้ตรงกับที่ระบบอื่นใช้ หรือวางไบต์ที่ตรงกันทุกไบต์ในรูปเลขฐานสิบหก