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

ประเภทข้อมูลใดที่จะใช้สำหรับฟิลด์รหัสผ่านที่แฮชใน MySQL?


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

มีอัลกอริธึมและประเภทข้อมูลที่หลากหลายสำหรับเก็บค่า

  • MD5 - สามารถใช้ char(32) หรือ BINARY(16) ได้

  • SHA-1 - สามารถใช้ชนิดข้อมูล char(40) หรือ BINARY(20)

ตัวอย่าง MD5

ต่อไปนี้เป็นตัวอย่าง −

mysql> select MD5('This is a hash password');

นี่คือผลลัพธ์

+------------------------------------------------+| MD5('นี่คือรหัสผ่านที่แฮช') |+------------------------------------------------+| e9d4c42db40abbb4724a0047f7e91e67 |+ ---------------------------------- +1 แถวในชุด (0.03 วินาที)

เพื่อทราบความยาวของรหัสผ่านที่แฮช

mysql>  SELECT CHARACTER_LENGTH(MD5('This is a hash password'));+----------------------------- ----------------------------------+| CHARACTER_LENGTH(MD5('นี่คือรหัสผ่านที่แฮช')) |+----------------------------------- ------------------|| 32 |+---------------------------------------------------------- -----+1 แถวในชุด (0.04 วินาที)

ตัวอย่างของ SHA-1

mysql> เลือก SHA1('นี่คือรหัสผ่านที่แฮช');

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+------------------------------------------+| SHA1('นี่คือรหัสผ่านที่แฮช')        |+-------------------------------------- ----+| 4e2e1a39dba84a0b5a91043bb0e4dbef23970837 |+------------------------------------------ +1 แถวในชุด (0.00 วินาที)

เราสามารถทราบความยาวได้ด้วยฟังก์ชัน character_length()

mysql>  SELECT CHARACTER_LENGTH(SHA1('This is a hash password'));

ต่อไปนี้เป็นผลลัพธ์

<ก่อน>+--------------------------------------------- --------+| CHARACTER_LENGTH(SHA1('นี่คือรหัสผ่านที่แฮช')) |+----------------------------------- -------------------+| 40 |+---------------------------------------------------- ------+1 แถวในชุด (0.00 วินาที)