การใช้ 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