ในการเขียนโปรแกรมบางครั้งเราต้องการเข้ารหัสข้อมูล คือแปลงข้อมูลเดิมให้เป็นอีกข้อมูลหนึ่ง ถ้าอยาก
ให้กลับเป็นข้อมูลเดิมก็ถอดรหัสกลับ แต่ในที่นี่เราจะแนะนำ module ที่ช่วยให้เราแปลงข้อมูลแบบทางเดียว
คือไม่สามารถถอดรหัสกลับมาเป็นข้อมูลเดิมได้ แล้วแบบนี้จะมีประโยชน์ย่างไร กรณีที่เราต้องการเก็บข้อมูล
รหัสผ่านของผู้ใช้งานเว็บไซต์ module นี้จะมีประโยชน์มากเพราะสามารถเข้ารหัสแบบทางเดียวได้และสามารถ
พิสูจน์ข้อมูลได้ว่าก่อนเข้ารหัสเป็นข้อมูลเดียวกันหรือเรียกว่าทำการ compare ได้นั่นเอง เช่น ตั้งรหัสผ่านเป็น
a1234 เมื่อเข้ารหัสด้วย bcryptjs จะได้ข้อมูลใหม่เป็น as#+ab โดยข้อมูลใหม่นี้ถ้านำรหัสอื่นมา compare จะได้
ค่าออกมาเป็น false ต้องเป็นรหัสที่ถูกต้องเท่านั้นอย่าง a1234 จึงจะได้ผลลัพธ์ออกมาเป็น true
ตัวอย่างการใช้งาน
จากตัวอย่างโด้ดด้านบนมีการกำหนดให้ genSaltSync(10) เพื่อป้องกันการ rainbow table attacks ซึ่ง
เป็นวิธีหนึ่งในการเจาะรหัสผ่าน ข้อมูลที่ได้หลังจากการเข้ารหัสจะถูกเรียกว่า hash ถ้าทำระบบฐานข้อมูลผู้ใช้
งานที่เป็น username password ให้นำ password มาเข้ารหัสเป็น hash ก่อนแล้วค่อยเก็บลงฐานข้อมูล ส่วน
กรณีผู้ใช้งานลงชื่อเข้าใช้ให้นำรหัสที่ผู้ใช้งานกรอกมา compare กับ hash ว่าได้ผลลัพธ์เป็น true หรือไม่ ถ้าได้
ture ก็ให้ผ่านเข้ามาได้
แหล่งที่มา
ความคิดเห็น
แสดงความคิดเห็น