MySQL是最流行的關系型數據庫管理系統,可以提供一些安全特性來保護數據庫中的數據免受不良行為的影響。其中,在存儲密碼時,使用加鹽技術是最受歡迎的方法之一,因為它可以幫助防止哈希碰撞攻擊。
鹽是一個隨機字符串,它會在密碼上進行哈希計算之前添加到密碼中。這樣做的好處是在數據庫中存儲的密碼是不同的,即使兩個用戶之間使用了相同的密碼。在使用 hash 函數時,加鹽可以提高密碼哈希值的唯一性。
下面是一個使用 SHA-256 的哈希加鹽算法的例子:
$password = 'mypassword'; $salt = bin2hex(random_bytes(32)); // 生成32字節的隨機鹽 $hash = hash('sha256', $password.$salt); // 加鹽哈希密碼 $stored_password = $salt.$hash; // 將鹽和哈希值一起存儲
在驗證密碼時,需要使用存儲的密碼、計算哈希值和鹽。
$input_password = 'mypassword'; $stored_password = '4f2f13baba15a2a2d0d8df810c0e579a301f25ec480868b5d9c5dc5f5e5d7faf0cf722b6251e3a32ee'" $salt = substr($stored_password, 0, 64); // 獲取存儲的鹽 $hash = hash('sha256', $input_password.$salt); // 哈希輸入密碼和鹽 if ($salt.hash('sha256', $hash) === $stored_password) { echo '密碼正確'; } else { echo '密碼錯誤'; }
加鹽是一個安全而簡單的方法,可幫助保護密碼,時間和金錢。它是在密碼哈希值上添加一個不可見的附加值,以增強哈希的唯一性。這可防止一些攻擊,例如字典攻擊和暴力攻擊。