วิธีสร้างแฮช MD5, SHA-256 และอื่นๆ
การแฮชแปลงอินพุตใดๆ — รหัสผ่าน ไฟล์ ข้อความ — เป็นสตริงที่มีความยาวคงที่ อินพุตเดียวกันให้แฮชเดียวกันเสมอ แต่การเปลี่ยนแปลงเล็กน้อยที่สุดในอินพุตก็ให้แฮชที่แตกต่างไปอย่างสิ้นเชิง สิ่งนี้ทำให้การแฮชจำเป็นสำหรับการตรวจสอบความสมบูรณ์ การจัดเก็บรหัสผ่าน และลายเซ็นดิจิทัล
การแฮชทำงานอย่างไร
ฟังก์ชันแฮชรับอินพุตขนาดใดก็ได้และให้เอาต์พุตขนาดคงที่:
| อินพุต | แฮช SHA-256 (16 อักขระแรก) |
|---|---|
| hello | 2cf24dba5fb0a30e... |
| Hello | 185f8db32271fe25... |
| hello! | ce06092fb948d9ff... |
สังเกตว่าการเปลี่ยนแปลงอักขระเดียว (h ตัวพิมพ์เล็กเป็น H ตัวพิมพ์ใหญ่) หรือการเพิ่มเข้ามาเปลี่ยนแฮชอย่างสิ้นเชิง สิ่งนี้เรียกว่า เอฟเฟกต์ลูกหิมะ
อัลกอริทึมแฮชที่พบบ่อย
| อัลกอริทึม | ความยาว | สถานะ | ใช้สำหรับ |
|---|---|---|---|
| MD5 | 32 อักขระ | เสีย (ไม่ปลอดภัย) | เช็คซัมเก่า การใช้งานที่ไม่ปลอดภัย |
| SHA-1 | 40 อักขระ | เสีย (ไม่ปลอดภัย) | ระบบเก่าเท่านั้น |
| SHA-256 | 64 อักขระ | ปลอดภัย | ความสมบูรณ์ของไฟล์ ลายเซ็นดิจิทัล |
| SHA-512 | 128 อักขระ | ปลอดภัย | แอปพลิเคชันความปลอดภัยสูง |
SHA-256 เป็นมาตรฐานปัจจุบันสำหรับการใช้งานส่วนใหญ่ MD5 และ SHA-1 ควรใช้เฉพาะเพื่อโต้ตอบกับระบบเก่าที่ต้องการเท่านั้น
วิธีสร้างแฮช
- เลือกอัลกอริทึมของคุณ — เลือก MD5, SHA-1, SHA-256, SHA-384 หรือ SHA-512 ใช้ SHA-256 เว้นแต่มีเหตุผลเฉพาะ
- ป้อนข้อความหรืออัปโหลดไฟล์ — พิมพ์หรือวางข้อความ หรือเลือกไฟล์ที่จะแฮช
- คัดลอกแฮช — ผลลัพธ์เป็นสตริงฐานสิบหกที่ใช้สำหรับการตรวจสอบ การจัดเก็บ หรือการเปรียบเทียบ
การใช้งานจริง
การตรวจสอบความสมบูรณ์ของไฟล์ — ดาวน์โหลดไฟล์และเปรียบเทียบแฮชกับที่เผยแพร่อย่างเป็นทางการ หากตรงกัน ไฟล์เป็นของแท้และไม่เสียหาย
การจัดเก็บรหัสผ่าน — แอปพลิเคชันจัดเก็บแฮชของรหัสผ่าน ไม่ใช่รหัสผ่านเอง เมื่อคุณเข้าสู่ระบบ อินพุตของคุณจะถูกแฮชและเปรียบเทียบกับแฮชที่จัดเก็บไว้
การลดข้อมูลซ้ำ — แฮชไฟล์ขนาดใหญ่เพื่อตัดสินอย่างรวดเร็วว่าเหมือนกันหรือไม่ โดยไม่ต้องเปรียบเทียบไบต์ต่อไบต์
HMAC สำหรับความปลอดภัย API — ใช้ HMAC (แฮชด้วยกุญแจลับ) เพื่อลงนามคำขอ API และให้แน่ใจว่าไม่ถูกแก้ไขในการขนส่ง
เคล็ดลับ
- ใช้ SHA-256 เป็นค่าเริ่มต้น — ปลอดภัย ได้รับการสนับสนุนอย่างกว้างขวาง และเป็นคำแนะนำมาตรฐานสำหรับโครงการใหม่
- อย่าใช้ MD5 สำหรับความปลอดภัย — การชนกันของ MD5 (อินพุตที่แตกต่างกันให้แฮชเดียวกัน) สามารถสร้างได้ในไม่กี่วินาที เหมาะสำหรับเช็คซัมที่ไม่ปลอดภัย แต่ไม่เหมาะสำหรับสิ่งที่สำคัญด้านความสมบูรณ์
- ใส่เกลือในแฮชรหัสผ่านของคุณ — การเพิ่มเกลือสุ่มลงในแต่ละรหัสผ่านก่อนการแฮชป้องกันการโจมตีด้วยตารางสายรุ้ง ใช้ bcrypt หรือ Argon2 สำหรับการแฮชรหัสผ่านในการผลิต
- การแฮชไฟล์ทำงานในเครื่อง — ไฟล์ถูกประมวลผลในเบราว์เซอร์ของคุณ ดังนั้นแม้ไฟล์ขนาดใหญ่ก็ไม่เคยออกจากอุปกรณ์ของคุณ
คำถามที่พบบ่อย
ความแตกต่างระหว่าง MD5, SHA-1 และ SHA-256 คืออะไร?
MD5 ผลิตแฮช 128 บิต (32 อักขระเลขฐานสิบหก) SHA-1 ผลิต 160 บิต (40 อักขระ) และ SHA-256 ผลิต 256 บิต (64 อักขระ) MD5 และ SHA-1 ถือว่าเสียทางการเข้ารหัส SHA-256 ปัจจุบันปลอดภัยและแนะนำสำหรับการตรวจสอบความสมบูรณ์และความปลอดภัย
สามารถย้อนกลับแฮชเพื่อค้นหาข้อมูลต้นฉบับได้หรือไม่?
ไม่ ฟังก์ชันแฮชเป็นทางเดียวโดยการออกแบบ คุณไม่สามารถย้อนกลับแฮชไปยังอินพุตทางคณิตศาสตร์ได้ อย่างไรก็ตาม รหัสผ่านที่พบบ่อยอาจถูกค้นพบในตารางที่คำนวณไว้ล่วงหน้า (rainbow tables) จึงเป็นเหตุผลให้สำคัญที่จะใส่เกลือรหัสผ่านก่อนการแฮช
HMAC คืออะไร?
HMAC (Hash-based Message Authentication Code) รวมฟังก์ชันแฮชกับกุญแจลับ มันตรวจสอบทั้งความสมบูรณ์และความถูกต้องของข้อมูล — พิสูจน์ว่าไม่ถูกแก้ไขและถูกผลิตโดยคนที่รู้กุญแจลับ
ข้อมูลของฉันถูกส่งไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ การแฮชทั้งหมดทำงานในเบราว์เซอร์ของคุณด้วย Web Crypto API ข้อความและไฟล์ของคุณไม่เคยออกจากอุปกรณ์ของคุณ