Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Hashing ทำงานอย่างไร?


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

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

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

โครงสร้างข้อมูลการแฮชช่วยให้อาร์เรย์ค้นหาและจัดเก็บข้อมูลได้อย่างมีประสิทธิภาพ สนับสนุนโครงสร้างที่มีประสิทธิภาพในการค้นหาและจัดเก็บข้อมูล สมมุติว่าสามารถมีรายชื่อ 20,000 หมายเลข และขอให้ค้นหาหมายเลขเฉพาะในรายการนั้น และสามารถสแกนแต่ละหมายเลขในรายการเพื่อดูว่าตรงกับหมายเลขที่ป้อนหรือไม่

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

สามารถใช้เพื่อค้นหาหรือจัดเก็บองค์ประกอบในคอลเลกชั่นได้อย่างมีประสิทธิภาพเมื่อค้นหา ตัวอย่างเช่น หากสามารถมีรายการคำศัพท์ภาษาอังกฤษ 10,000 คำและต้องการตรวจสอบว่ามีคำใดอยู่ระหว่างคำนั้น การเปรียบเทียบคำที่กำหนดกับรายการทั้งหมด 10,000 รายการจะไม่มีประสิทธิภาพจนกว่าจะพบคำที่ตรงกัน

อาร์เรย์สามารถสร้างดัชนีได้ด้วยค่าของคีย์ของช่วง ซึ่งเรียกว่า Ashashing ตัวดำเนินการโมดูโลจะถูกใช้เพื่อรับช่วงของค่าคีย์ ในกรณีนี้ สามารถจัดเก็บรายการต่อไปนี้ในตารางแฮช 20x20 แต่ละรายการอยู่ในรูปแบบ asa (คีย์ ค่า)

อัลกอริธึมการแฮชรวมถึง MD5, SHA-1, SHA-2, NTLM และ LANMAN ล้วนใช้กันทั่วไปในโลกปัจจุบัน ไดเจสต์ข้อความแบ่งออกเป็น 5 เวอร์ชัน โดยเวอร์ชันนี้คือ MD5 ก่อนหน้านี้ MD5 เป็นหนึ่งใน hashingalgorithm ที่มีชื่อเสียงที่สุด MD5 ต้องการเอาต์พุต 128 บิต

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