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

MySQL: แปลงรหัสผ่าน MD5 เป็น SHA256

การใช้ SHA2() สำหรับ Hash

ฟังก์ชัน SHA2(str, hash_length) คำนวณ Hash แบบ SHA-2 รองรับ 224, 256, 384, 512 บิต

ตัวอย่าง: แปลง MD5 ที่เก็บอยู่ เป็น SHA256

mysql> create table DemoTable818(UserPassword text);
Query OK, 0 rows affected (0.51 sec)
mysql> insert into DemoTable818 values(MD5('John_123'));
mysql> insert into DemoTable818 values(MD5('999Carol@22'));

ก่อนแปลง (MD5 - 32 ตัวอักษร Hex)

+----------------------------------+
| UserPassword                     |
+----------------------------------+
| 47c7d0987db4e59e2264ce9fefce4977 |
| 950aa70edd5b686a807b3bfffdf2248c |
+----------------------------------+

คำสั่งแปลงเป็น SHA256 (64 ตัวอักษร Hex)

mysql> update DemoTable818 set UserPassword = SHA2(UserPassword, 256);
Query OK, 2 rows affected (0.19 sec)

หลังแปลง

+------------------------------------------------------------------+
| UserPassword                                                     |
+------------------------------------------------------------------+
| 8b68c46294a9ccb2449324c24fe774f95b7c14e4b56fc51c7f8e6c5b01c7020f |
| 9cc80741546051ae3de7d31246327968c98af3c65125376acb7b49a0760d42a3 |
+------------------------------------------------------------------+

⚠️ ข้อควรระวังสำคัญ

  • นี่คือการ Hash ซ้อน (Double Hashing): SHA2(MD5(password)) ไม่ใช่ SHA2(password)
  • ไม่ปลอดภัยสำหรับรหัสผ่านจริง: ควรใช้ bcrypt, argon2, หรือ PBKDF2 แทน
  • MySQL มี SHA2() แต่ไม่มี Bcrypt Built-in
  • การ Hash รหัสผ่านควรทำที่ Application Layer ไม่ใช่ใน Database

สรุป

ใช้ SHA2(column, 256) แปลงค่า Hash เดิมเป็น SHA256 ได้ แต่ ไม่แนะนำสำหรับรหัสผ่านจริง ควรย้ายไปใช้ Bcrypt/Argon2 ที่ Application