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

ความยาวของ SHA256 Hash ใน MySQL

SHA-256 ให้ผลลัพธ์ 256 บิต = 32 ไบต์

  • Hexadecimal: 256 ÷ 4 = 64 ตัวอักษร (0-9, a-f)
  • Binary: 32 ไบต์
  • Data Type: CHAR(64) หรือ BINARY(32) (ใช้ UNHEX() แปลง)

ตัวอย่างสร้างตาราง

mysql> CREATE TABLE SHA256Demo (
    -> Password VARCHAR(64)  -- หรือ CHAR(64) / BINARY(32)
    -> );

Insert Hash (Hex)

mysql> INSERT INTO SHA256Demo VALUES ('4e2e1a39dba84a0b5a91043bb0e4dbef23970837');

สร้าง SHA-256 ใน MySQL

mysql> SELECT SHA2('password', 256);
+------------------------------------------------------------------+
| SHA2('password', 256)                                            |
+------------------------------------------------------------------+
| 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 |
+------------------------------------------------------------------+

เก็บเป็น Binary (ประหยัดพื้นที่ 50%)

mysql> CREATE TABLE SHA256Binary (pwd_hash BINARY(32));
mysql> INSERT INTO SHA256Binary VALUES (UNHEX(SHA2('password', 256)));
mysql> SELECT HEX(pwd_hash) FROM SHA256Binary;  -- แสดงเป็น Hex กลับมา

เปรียบเทียบ Hash Algorithms

AlgorithmBitsHex CharsBINARY Sizeใช้สำหรับ Password?
MD51283216❌ แตกง่าย
SHA-11604020❌ แตกง่าย
SHA-2562566432⚠️ เร็วเกินไป (ต้อง Salt+Iterations)
SHA-51251212864⚠️ เร็วเกินไป
bcrypt~18460-✅ ดี (Cost Factor)
Argon2idVariable~96+-✅ สุดโปรด (PHC Winner)
สำคัญ: อย่าเก็บ Password Hash ใน MySQL โดยตรงจาก Application ให้ Hash ใน App Layer ด้วย Argon2id/bcrypt แล้วเก็บแค่ String (CHAR/VARCHAR)