แฮช คือสตริงที่มีความยาวคงที่ (ไดเจสต์) ที่สร้างจากข้อมูลอินพุตที่มีขนาดใดก็ได้โดยใช้ ฟังก์ชันแฮช กระบวนการนี้เป็นแบบ ทางเดียว นั่นคือ คุณไม่สามารถถอดรหัสหรือย้อนกลับแฮชเพื่อรับข้อมูลต้นฉบับได้ ดังนั้น "การเข้ารหัสแฮช" จึงเป็นคำที่ใช้ไม่ถูกต้อง การแฮชไม่ใช่การเข้ารหัส
อัลกอริทึมแฮชยอดนิยมได้แก่:
MD5 (ล้าสมัยสำหรับการใช้งานด้านความปลอดภัย)
SHA-1 (ไม่สนับสนุนอีกต่อไป)
SHA-256, SHA-512 (ส่วนหนึ่งของตระกูล SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (สำหรับการแฮชรหัสผ่านที่ปลอดภัย)
การแฮชมีวัตถุประสงค์หลายประการในการรักษาความปลอดภัยทางไซเบอร์และความสมบูรณ์ของข้อมูล เหตุผลหลักในการใช้การแฮช ได้แก่:
ความสมบูรณ์ของข้อมูล: ช่วยให้แน่ใจว่าข้อมูลไม่ได้ถูกเปลี่ยนแปลง (เช่น ผลรวมการตรวจสอบความถูกต้องของไฟล์)
การจัดเก็บรหัสผ่าน: จัดเก็บรหัสผ่านอย่างปลอดภัยโดยการเปรียบเทียบแฮชแทนที่จะจัดเก็บรหัสผ่านจริง
ลายเซ็นดิจิทัล: แฮชได้รับการลงนามแทนเอกสารขนาดใหญ่
ประสิทธิภาพ: ค่าแฮชขนาดเล็กและมีขนาดคงที่นั้นสามารถเปรียบเทียบได้เร็วกว่าบล็อกข้อมูลขนาดใหญ่
เนื่องจากแฮชนั้นมีความแน่นอนและรวดเร็ว จึงเหมาะอย่างยิ่งสำหรับงานตรวจสอบ
การใช้ฟังก์ชันแฮชเกี่ยวข้องกับ:
การป้อนข้อมูล (เช่น ไฟล์ สตริง หรือรหัสผ่าน)
การประมวลผลข้อมูล ด้วยอัลกอริทึมแฮช
การรับไดเจสต์ ซึ่งเป็นสตริงที่มีขนาดคงที่ซึ่งแสดงอินพุตอย่างเฉพาะเจาะจง
สำหรับการป้องกันด้วยรหัสผ่าน:
รวมรหัสผ่านกับ salt (ข้อมูลสุ่ม)
ใช้ฟังก์ชันแฮชที่ปลอดภัย (เช่น bcrypt หรือ Argon2)
จัดเก็บ ผลลัพธ์แฮชและซอลต์อย่างปลอดภัย
เนื่องจากแฮชไม่สามารถย้อนกลับได้ คุณจึงยืนยันอินพุต (เช่น รหัสผ่าน) โดยการแฮชอีกครั้งและเปรียบเทียบแฮชใหม่กับแฮชที่เก็บไว้
ควรใช้แฮชเมื่อ:
จำเป็นต้องตรวจสอบความสมบูรณ์ของข้อมูล (เช่น ตรวจหาการทุจริตหรือการดัดแปลง)
ต้องจัดเก็บรหัสผ่านอย่างปลอดภัย (ไม่เข้ารหัสหรือเป็นข้อความธรรมดา)
ต้องใช้ลายเซ็นดิจิทัลและใบรับรอง (การแฮชช่วยรับรองความถูกต้องของเอกสาร)
รวดเร็ว การเปรียบเทียบข้อมูลเป็นสิ่งจำเป็น (เช่น ในตารางแฮชหรือแคช)
การแฮชนั้น ไม่ เหมาะสมเมื่อคุณต้องการกู้คืนข้อมูลต้นฉบับในภายหลัง ซึ่งนั่นคือจุดประสงค์ของการเข้ารหัส