ฟังก์ชันแฮช เป็นฟังก์ชันที่มีบทบาทอย่างมากในการสร้างระบบความปลอดภัยเนื่องจากสามารถแปลงข้อมูลปกติที่กำหนดให้เป็นค่าความยาวคงที่ผิดปกติและอ่านก็ไม่มีทางเข้าใจเลย เราสามารถจินตนาการได้ว่าเป็นเครื่องปั่นในบ้านของเรานั้น  
เมื่อเราใส่ข้อมูลลงในฟังก์ชั่นนี้มันจะส่งออกค่าที่ไม่ปกติหรือไร้ความหมาย ค่าเหล่านี้เรียกว่า"ค่าแฮช(Hash Value)"  ค่าแฮชเป็นเพียงตัวเลข แต่มักเขียนเป็นเลขฐานสิบหก คอมพิวเตอร์จัดการค่าเป็นแบบไบนารี ค่าแฮชยังเป็นข้อมูลและมักถูกจัดการใน binary Hash function

ตัวอย่าง Hash function

 

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

คุณสมบัติของฟังก์ชันแฮช (Hash function)

  1. ข้อมูลแต่ละตัวเมื่อผ่านฟังก์ชันแฮชแล้วจะต้องมีค่าไม่เท่ากัน มีลักษณะที่จำเพาะแต่ล่ะข้อมูล
  2. หาค่าแฮชจากข้อมูลควรทำได้ง่ายและรวดเร็ว
  3. เมื่อข้อมูลผ่านฟังก์ชันแฮชแล้วไม่ควรทำย้อนกลับได้
  4. การบวนการแฮชควรมีการกระจายตัวสูง ข้อมูลใดๆที่ผ่านฟังก์ชันแฮชควรมีขนาดเท่ากัน แต่ไม่เหมือนกัน

ทำไมต้องมีฟังก์ชันแฮช?

  1. เพื่อใช้ตรวจสอบว่าข้อมูลมีการเปลี่ยนแปลงหรือไม่
  2. เพื่อใช้เก็บข้อมูลสำหรับเปรียบเทียบ โดยการเปรียบเทียบข้อมูลจะทำได้รวดเร็วขึ้น
  3. ทำให้เป็นภาษาที่มนุษย์อ่านไม่เข้าใจ
  4. หากข้อมูลที่จะใช้เปรียบเทียบมีขนาดใหญ่มาก จะช่วยย่อข้อมูลให้เล็กลงได้มาก แต่ขึ้นอยู่กับวิธีของฟังก์ชันแฮช

ชนิดของฟังก์ชันแฮช

  1. MD2 (128bits) คิดค้นโดย Ronald Rivests
  2. MD4 (128bits) คิดค้นโดย Ronald Rivests
  3. MD5 (128bits) คิดค้นโดย Ronald Rivests
  4. MD6 (0~512 bits) คิดค้นโดย Ronald Rivests Team
  5. SHA0 (160bits) คิดค้นโดย National Security Agency : NSA
  6. SHA1 (160bits) คิดค้นโดย National Security Agency : NSA
  7. SHA2 (SHA-224, SHA-256, SHA-384, SHA-512) คิดค้นโดย National Security Agency : NSA

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

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : PHP - Security

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Google Chrome เข้าเว็ปที่เป็น HTTP ไม่ได้จะเป็นอย่างไร
โดย noncup302 พ 10 ม.ค. 2024 12:26 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
737
พฤ 11 ม.ค. 2024 8:53 pm โดย บุคคลทั่วไป View Topic Google Chrome เข้าเว็ปที่เป็น HTTP ไม่ได้จะเป็นอย่างไร
อินเตอร์เน็ตบ้าน กับ Corporate ต่างกันอย่างไร
โดย Anonymous อ 09 ม.ค. 2024 12:40 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
327
พ 10 ม.ค. 2024 12:24 pm โดย noncup302 View Topic อินเตอร์เน็ตบ้าน กับ Corporate ต่างกันอย่างไร
ตรวจสอบข้อมูลภาษี MyTaxAccount - เพื่อยื่นแบบแสดงรายการภาษีเงินได้บุคคลธรรมดา (แบบ ภ.ง.ด.90/ภ.ง.ด.91)
โดย mindphp อ 07 ม.ค. 2024 6:05 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
1
1078
อ 07 ม.ค. 2024 6:09 pm โดย mindphp View Topic ตรวจสอบข้อมูลภาษี MyTaxAccount - เพื่อยื่นแบบแสดงรายการภาษีเงินได้บุคคลธรรมดา (แบบ ภ.ง.ด.90/ภ.ง.ด.91)
ใครใช้ SSH อัพเกรดด่วน เครื่องคุณกำลังมีความเสียงสำหรับคนที่ใช้ OpenSSH ต่ำกว่าเวอร์ชั่น 9.5
โดย mindphp อ 07 ม.ค. 2024 3:15 am บอร์ด MindPHP News & Feedback
1
283
อ 07 ม.ค. 2024 3:20 am โดย mindphp View Topic ใครใช้ SSH อัพเกรดด่วน เครื่องคุณกำลังมีความเสียงสำหรับคนที่ใช้ OpenSSH ต่ำกว่าเวอร์ชั่น 9.5
สอบถามครับ Joomla ใช้ Hosting ของอะไรดีครับ
โดย Anonymous อ 07 ม.ค. 2024 3:00 am บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
741
อ 07 ม.ค. 2024 6:34 pm โดย mindphp View Topic สอบถามครับ Joomla ใช้ Hosting ของอะไรดีครับ
หากคุณเป็นแฟนตัวยงของฟุตบอลไทย คือเว็บไซต์ที่คุณห้ามพลาด
โดย chenyuting ศ 05 ม.ค. 2024 4:52 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
390
ศ 05 ม.ค. 2024 4:52 pm โดย chenyuting View Topic หากคุณเป็นแฟนตัวยงของฟุตบอลไทย คือเว็บไซต์ที่คุณห้ามพลาด
จะติดตั้ง sql server php driver บน mac
โดย Anonymous ศ 05 ม.ค. 2024 2:07 pm บอร์ด Programming - PHP
1
958
ส 06 ม.ค. 2024 7:25 pm โดย mindphp View Topic จะติดตั้ง sql server php driver บน mac
สอบถามการหา Channel access token ของไลน์ Notify
โดย Thanavat_n พฤ 04 ม.ค. 2024 11:51 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
426
ศ 05 ม.ค. 2024 8:24 am โดย emptyspace View Topic สอบถามการหา Channel access token ของไลน์ Notify