Pertama-tama, DBMS (MySQL) Anda tidak perlu memiliki dukungan untuk hash kriptografi. Anda dapat melakukan semua itu di sisi PHP, dan itu juga yang harus Anda lakukan.
Jika Anda ingin menyimpan garam dan hash di kolom yang sama, Anda harus menggabungkannya.
// the plaintext password
$password = (string) $_GET['password'];
// you'll want better RNG in reality
// make sure number is 4 chars long
$salt = str_pad((string) rand(1, 1000), 4, '0', STR_PAD_LEFT);
// you may want to use more measures here too
// concatenate hash with salt
$user_password = sha512($password . $salt) . $salt;
Sekarang, jika Anda ingin memverifikasi sandi, lakukan:
// the plaintext password
$password = (string) $_GET['password'];
// the hash from the db
$user_password = $row['user_password'];
// extract the salt
// just cut off the last 4 chars
$salt = substr($user_password, -4);
$hash = substr($user_password, 0, -4);
// verify
if (sha512($password . $salt) == $hash) {
echo 'match';
}
Anda mungkin ingin melihat phpass , yang juga menggunakan teknik ini. Ini adalah solusi hashing PHP yang menggunakan salting di antara beberapa hal lainnya.
Anda pasti harus melihat jawaban atas pertanyaan yang ditautkan oleh WolfOdrade.