Penyulitan Dua Hala: Menyimpan Kata Laluan Boleh Diperoleh
Pengenalan
Menyimpan kata laluan dengan selamat sambil membenarkan pengguna untuk mendapatkannya menimbulkan cabaran. Penyulitan simetri boleh menangani keperluan ini, tetapi memahami nuansa pelaksanaan adalah penting.
Penyulitan dan Penyahsulitan dalam PHP
Untuk menyulitkan dan menyahsulit kata laluan dalam PHP, pertimbangkan untuk menggunakan perpustakaan mcrypt atau OpenSSL. Berikut ialah contoh menggunakan mcrypt:
function encrypt($password, $key) { $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); } function decrypt($encryptedPassword, $key) { $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); }
Algoritma Paling Selamat
Algoritma penyulitan terbaik bergantung pada kes penggunaan tertentu. Untuk menyimpan kata laluan, AES-256 (Rijndael) dalam mod CBC atau CTR biasanya dianggap teguh.
Storan Kunci Peribadi
Menyimpan kunci persendirian dengan selamat adalah penting. Satu pendekatan yang disyorkan ialah menggunakan gabungan kata laluan pengguna dan garam bahagian pelayan. Dalam PHP, ini boleh dicapai menggunakan:
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); $key = hash('sha256', $userPassword . $salt);
Kunci Peribadi sebagai Input Pengguna
Jika pengguna boleh dipercayai, minta mereka memberikan kunci persendirian apabila mendapatkan semula kata laluan boleh menawarkan keselamatan tambahan. Ini melindungi daripada pelanggaran bahagian pelayan.
Risiko Keselamatan
Kata laluan yang disulitkan boleh terdedah kepada:
Strategi Mitigasi
Untuk mengurangkan risiko ini, laksanakan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan dan Mendapatkan Kata Laluan Dengan Selamat Menggunakan Penyulitan Dua Hala dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!