เครื่องมือระบุชนิดแฮช

วางค่าแฮชเพื่อดูว่าอัลกอริทึมใดบ้างที่อาจสร้างค่านั้นขึ้นมา โดยเรียงตามความเป็นไปได้ เครื่องมืออ่านได้ทั้งไดเจสต์แบบเลขฐานสิบหกและ Base64 รวมถึงรูปแบบแฮชรหัสผ่าน และยังตรวจสอบได้ด้วยว่าข้อความที่คุณคาดไว้ให้แฮชนี้หรือไม่

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. วางค่าแฮชหนึ่งค่า ลบป้ายกำกับอย่าง 0x, sha256= หรือ sha384- ออก แต่ให้คงแฮชรหัสผ่านไว้ทั้งหมด รวมถึงอักขระ $, { หรือ * ที่อยู่ข้างหน้า
  2. อ่านผลลัพธ์ ซึ่งแสดงรูปแบบที่ตรวจพบและขนาดเป็นบิต ตามด้วย “อัลกอริทึมที่เป็นไปได้” โดยรายการที่น่าจะเป็นที่สุดจะมีป้าย “เป็นไปได้มากที่สุด” กำกับไว้ หากสตริงมีค่า cost ของ bcrypt หรือจำนวนรอบของ sha256crypt, sha512crypt และ PBKDF2 ก็จะแสดงค่านั้นด้วย
  3. สำหรับอัลกอริทึมที่เป็นไปได้อย่าง MD5, SHA-1, SHA-256, SHA-512, CRC-32 และ CRC-32C ปุ่ม “เปิดเครื่องมือ” จะพาคุณไปยังเครื่องมือคำนวณที่ตรงกัน
  4. หากคุณรู้หรือคาดว่ารู้ข้อความต้นฉบับ ให้พิมพ์ลงในช่อง “ตรวจสอบกับข้อความ” เพื่อดูว่าอัลกอริทึมใดให้ค่าแฮชเดียวกันนี้

เครื่องมือระบุชนิดแฮชได้อย่างไร

อัลกอริทึมแฮชทุกตัวมีขนาดเอาต์พุตคงที่ และเลขฐานสิบหกใช้สองอักขระต่อหนึ่งไบต์ ความยาวของสตริงเลขฐานสิบหกจึงเป็นเบาะแสที่ชัดเจนที่สุด นอกจากนี้เครื่องมือยังตรวจสอบชุดอักขระ และมองหาตัวนำหน้าที่รูปแบบแฮชรหัสผ่านใส่ไว้ที่ต้นสตริง

อักขระเลขฐานสิบหกบิตอัลกอริทึมที่พบบ่อย
832CRC-32, CRC-32C, Adler-32
32128MD5, NTLM, MD4
40160SHA-1, RIPEMD-160
56224SHA-224, SHA3-224
64256SHA-256, SHA3-256, BLAKE2s, Keccak-256
96384SHA-384, SHA3-384
128512SHA-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
วางแฮชรหัสผ่านที่นี่ปลอดภัยหรือไม่

การวิเคราะห์ทำงานในเบราว์เซอร์ของคุณทั้งหมด และแฮชจะไม่ถูกส่งหรือจัดเก็บไว้ อย่างไรก็ตาม ใครก็ตามที่มีแฮชรหัสผ่านจากระบบจริงสามารถลองเดารหัสผ่านแบบออฟไลน์ได้ จึงควรถือว่าแฮชเหล่านี้เป็นข้อมูลอ่อนไหว และไม่ควรใส่ไว้ในทิกเก็ต แชต หรือภาพหน้าจอ