วิธีใช้งาน
- วางค่าแฮชหนึ่งค่า ลบป้ายกำกับอย่าง 0x, sha256= หรือ sha384- ออก แต่ให้คงแฮชรหัสผ่านไว้ทั้งหมด รวมถึงอักขระ $, { หรือ * ที่อยู่ข้างหน้า
- อ่านผลลัพธ์ ซึ่งแสดงรูปแบบที่ตรวจพบและขนาดเป็นบิต ตามด้วย “อัลกอริทึมที่เป็นไปได้” โดยรายการที่น่าจะเป็นที่สุดจะมีป้าย “เป็นไปได้มากที่สุด” กำกับไว้ หากสตริงมีค่า cost ของ bcrypt หรือจำนวนรอบของ sha256crypt, sha512crypt และ PBKDF2 ก็จะแสดงค่านั้นด้วย
- สำหรับอัลกอริทึมที่เป็นไปได้อย่าง MD5, SHA-1, SHA-256, SHA-512, CRC-32 และ CRC-32C ปุ่ม “เปิดเครื่องมือ” จะพาคุณไปยังเครื่องมือคำนวณที่ตรงกัน
- หากคุณรู้หรือคาดว่ารู้ข้อความต้นฉบับ ให้พิมพ์ลงในช่อง “ตรวจสอบกับข้อความ” เพื่อดูว่าอัลกอริทึมใดให้ค่าแฮชเดียวกันนี้
เครื่องมือระบุชนิดแฮชได้อย่างไร
อัลกอริทึมแฮชทุกตัวมีขนาดเอาต์พุตคงที่ และเลขฐานสิบหกใช้สองอักขระต่อหนึ่งไบต์ ความยาวของสตริงเลขฐานสิบหกจึงเป็นเบาะแสที่ชัดเจนที่สุด นอกจากนี้เครื่องมือยังตรวจสอบชุดอักขระ และมองหาตัวนำหน้าที่รูปแบบแฮชรหัสผ่านใส่ไว้ที่ต้นสตริง
| อักขระเลขฐานสิบหก | บิต | อัลกอริทึมที่พบบ่อย |
|---|---|---|
| 8 | 32 | CRC-32, CRC-32C, Adler-32 |
| 32 | 128 | MD5, NTLM, MD4 |
| 40 | 160 | SHA-1, RIPEMD-160 |
| 56 | 224 | SHA-224, SHA3-224 |
| 64 | 256 | SHA-256, SHA3-256, BLAKE2s, Keccak-256 |
| 96 | 384 | SHA-384, SHA3-384 |
| 128 | 512 | SHA-512, SHA3-512, BLAKE2b, Whirlpool |
ความยาวเพียงอย่างเดียวยังตัดสินไม่ได้ เพราะแฮชที่ดีจะดูเหมือนข้อมูลสุ่มและไม่มีเครื่องหมายใดบอกอัลกอริทึม ค่าที่ยาว 32 อักขระอาจเป็น MD5, MD4 หรือ NTLM ซึ่ง Windows ใช้กับรหัสผ่านของบัญชีผู้ใช้ (MD4 ของรหัสผ่านในรูปแบบ UTF-16LE) เครื่องมือจึงจัดอันดับอัลกอริทึมที่เป็นไปได้ตามความแพร่หลาย โดยให้ MD5 มาก่อน หรือให้ NTLM มาก่อนเมื่อแฮชเป็นตัวพิมพ์ใหญ่ทั้งหมด ซึ่งเป็นรูปแบบที่เครื่องมือดัมป์รหัสผ่านของ Windows บางตัวแสดงผลออกมา ในทำนองเดียวกัน Keccak-256 ของ Ethereum และ SHA3-256 ที่เป็นมาตรฐานต่างกันเพียงที่แพดดิง แต่ทั้งคู่ให้เลขฐานสิบหก 64 อักขระเหมือนกัน
ไดเจสต์แบบ Base64 และรูปแบบแฮชรหัสผ่าน
บางระบบเขียนไดเจสต์เป็น Base64 แทนเลขฐานสิบหก คือ 24 อักขระสำหรับ 16 ไบต์ (MD5 เช่นในส่วนหัว Content-MD5) 28 อักขระสำหรับ SHA-1, 44 สำหรับ SHA-256, 64 สำหรับ SHA-384 (เช่นในแอตทริบิวต์ Subresource Integrity) และ 88 สำหรับ SHA-512 เครื่องมือจะแปลงความยาวกลับเป็นจำนวนไบต์และแสดงรายการอัลกอริทึมที่เป็นไปได้ชุดเดียวกัน รองรับทั้งค่าที่ไม่มีแพดดิงและอักขระแบบปลอดภัยสำหรับ URL แต่ควรลบตัวนำหน้าอย่าง sha384- ออกก่อน
รูปแบบแฮชรหัสผ่านอธิบายตัวเองได้ ตัวนำหน้าบอกชื่ออัลกอริทึม และ salt กับการตั้งค่า cost ก็ถูกเขียนไว้ในสตริงด้วย รูปแบบสมัยใหม่ใช้ salt และถูกออกแบบให้ทำงานช้าโดยเจตนา ส่วนรูปแบบของ LDAP และ MySQL ในสองแถวสุดท้ายเป็นโครงสร้างที่อิง SHA-1 ซึ่งทำงานเร็ว และมีเพียง {SSHA} เท่านั้นที่เพิ่ม salt
| ขึ้นต้นด้วย | รูปแบบ | มักพบใน |
|---|---|---|
$2a$, $2b$, $2y$ | bcrypt ยาว 60 อักขระเสมอ ตัวเลขสองหลักถัดไปคือค่า cost และทุกค่าที่เพิ่มขึ้นหนึ่งขั้นจะทำให้ปริมาณงานเพิ่มเป็นสองเท่า | เว็บเฟรมเวิร์ก, password_hash() ของ PHP |
$argon2id$ | Argon2id พร้อมการตั้งค่าหน่วยความจำ (m) เวลา (t) และระดับการทำงานแบบขนาน (p) | แอปพลิเคชันสมัยใหม่ และเป็นรูปแบบที่ OWASP แนะนำ |
$6$, $5$ | sha512crypt, sha256crypt โดยอาจมี rounds= ด้วย | /etc/shadow บน Linux |
$y$ | yescrypt | /etc/shadow บนดิสทริบิวชัน Linux ปัจจุบันหลายตัว |
$1$, $apr1$ | md5crypt, Apache MD5 | ระบบ Unix รุ่นเก่า, .htpasswd |
pbkdf2_sha256$ | PBKDF2-SHA256 พร้อมจำนวนรอบการวนซ้ำ | Django |
{SHA}, {SSHA} | SHA-1, SHA-1 แบบใช้ salt | ไดเรกทอรี LDAP |
* ตามด้วยเลขฐานสิบหก 40 หลัก | PASSWORD() ของ MySQL 4.1 ขึ้นไป | ตารางผู้ใช้ของ MySQL |
การระบุชนิดไม่ใช่การแคร็ก
แฮชเป็นฟังก์ชันทางเดียว เครื่องมือระบุชนิดนี้ดูเพียงลักษณะของสตริงเท่านั้น ไม่สามารถเปิดเผย ถอดรหัส หรือค้นหาอินพุตต้นฉบับได้ และไม่ได้ส่งข้อมูลใด ๆ ไปยังเซิร์ฟเวอร์หรือฐานข้อมูลออนไลน์ วิธีเดียวที่จะหาอินพุตได้คือการเดาค่าที่เป็นไปได้แล้วแฮชทีละค่า ซึ่งเป็นสิ่งที่เครื่องมือกู้คืนรหัสผ่านอย่าง hashcat และ John the Ripper ทำเมื่อรู้อัลกอริทึมแล้ว รูปแบบที่ใช้ salt และทำงานช้าอย่าง bcrypt และ Argon2 มีขึ้นเพื่อทำให้การเดาแบบนี้สิ้นเปลืองทรัพยากรมาก ทดสอบเฉพาะแฮชที่คุณได้รับอนุญาตให้ใช้งานเท่านั้น
ตรวจสอบกับข้อความ ใช้ทดสอบการคาดเดาทีละค่า โดยจะแฮชข้อความที่คุณพิมพ์ในรูป UTF-8 ด้วย MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 และ CRC-32C แล้วบอกว่าผลลัพธ์ใดตรงกับแฮช ไม่ว่าแฮชจะเขียนเป็นเลขฐานสิบหกตัวพิมพ์เล็กหรือใหญ่ หรือเป็น Base64 ฟังก์ชันนี้ยืนยันแฮชรหัสผ่านที่ใช้ salt หรือ HMAC ไม่ได้ เพราะค่าเหล่านั้นขึ้นอยู่กับ salt หรือคีย์ลับด้วย สำหรับค่าที่ใช้คีย์ ให้ใช้ตัวสร้าง HMACพร้อมคีย์นั้น
คำถามที่พบบ่อย
เครื่องมือนี้บอกข้อความหรือรหัสผ่านต้นฉบับได้หรือไม่
ไม่ได้ เครื่องมือบอกได้เพียงชื่ออัลกอริทึมที่น่าจะเป็น ฟังก์ชันแฮชย้อนกลับไม่ได้ “ตัวถอดรหัสแฮช” ออนไลน์ใช้วิธีค้นหาค่าในตารางแฮชของคำทั่วไปและรหัสผ่านที่รั่วไหล ซึ่งได้ผลเฉพาะกับอินพุตที่คาดเดาง่ายและไม่ใช้ salt เท่านั้น
ทำไมแฮชค่าเดียวจึงแสดงหลายอัลกอริทึม
อัลกอริทึมที่มีขนาดเอาต์พุตเท่ากันจะให้สตริงที่มีความยาวและชุดอักขระเหมือนกัน และไม่มีข้อมูลใดในแฮชที่บันทึกว่าใช้อัลกอริทึมใด รายการที่น่าจะเป็นที่สุดจะแสดงเป็นอันดับแรกโดยพิจารณาจากความแพร่หลายของแต่ละอัลกอริทึม หากต้องการความแน่นอน ให้คำนวณแฮชใหม่จากอินพุตที่ทราบค่า
สตริงเลขฐานสิบหก 32 อักขระเป็น MD5 เสมอหรือไม่
โดยทั่วไปใช่ แต่ไม่เสมอไป NTLM, MD4, MD2 และ RIPEMD-128 ให้ความยาวเท่ากัน รวมถึงค่า 128 บิตใด ๆ ที่เขียนเป็นเลขฐานสิบหก เช่น UUID ที่ไม่มีขีด หรือโทเค็นสุ่ม บริบทจึงเป็นตัวตัดสิน หากเป็นแฮชรหัสผ่านของ Windows ก็หมายถึง NTLM หากเป็นเช็กซัมของไฟล์ก็หมายถึง MD5
ทำไม “ตรวจสอบกับข้อความ” จึงไม่พบค่าที่ตรงกัน
echo จะเพิ่มให้หนึ่งตัว เว้นแต่จะใช้ echo -n หรือ printf) การเว้นวรรคหรือตัวพิมพ์เล็ก-ใหญ่ต่างกัน ข้อความถูกแฮชด้วยการเข้ารหัสอักขระอื่นที่ไม่ใช่ UTF-8 มี salt หรือคีย์เหมือนในแฮชรหัสผ่านและ HMAC หรือเป็นอัลกอริทึมที่การตรวจสอบนี้ไม่รองรับ เช่น SHA-3, BLAKE2 หรือ NTLMวางแฮชรหัสผ่านที่นี่ปลอดภัยหรือไม่
การวิเคราะห์ทำงานในเบราว์เซอร์ของคุณทั้งหมด และแฮชจะไม่ถูกส่งหรือจัดเก็บไว้ อย่างไรก็ตาม ใครก็ตามที่มีแฮชรหัสผ่านจากระบบจริงสามารถลองเดารหัสผ่านแบบออฟไลน์ได้ จึงควรถือว่าแฮชเหล่านี้เป็นข้อมูลอ่อนไหว และไม่ควรใส่ไว้ในทิกเก็ต แชต หรือภาพหน้าจอ