Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Penyulitan Dua Hala Boleh Menyimpan dan Mendapatkan Kata Laluan Selamat dalam PHP?
Pengenalan
Untuk penyimpanan selamat kata laluan yang memerlukan pengambilan semula, penyulitan dua hala adalah penting. Artikel ini meneroka kaedah untuk menyulitkan dan menyahsulit kata laluan dalam PHP, memastikan privasi mereka sambil mengekalkan kebolehcapaian pengguna.
Menyulitkan dan Menyahsulit Kata Laluan dalam PHP
Untuk menyulitkan kata laluan dalam PHP , anda boleh menggunakan perpustakaan mcrypt. Fungsi berikut menunjukkan proses penyulitan:
function encryptPassword($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); }
Untuk menyahsulit kata laluan, anda menggunakan fungsi yang serupa:
function decryptPassword($encryptedPassword, $key) { $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv); }
Memilih Algoritma Penyulitan Selamat
Mengenai algoritma penyulitan, Blowfish dan Rijndael-128 (AES-128) dianggap sebagai pilihan selamat untuk penyulitan kata laluan. Mereka menawarkan tahap perlindungan yang tinggi terhadap serangan kekerasan.
Storan Kunci Peribadi
Adalah penting untuk melindungi kunci peribadi yang digunakan untuk penyulitan. Pilihan yang berbeza untuk menyimpan kunci persendirian termasuk:
Memerlukan Input Pengguna untuk Kunci Peribadi
Memerlukan pengguna memasukkan kunci peribadi setiap kali mereka memerlukan kata laluan yang dinyahsulit memastikan keselamatan tambahan. Ini menghalang akses tanpa kebenaran walaupun kunci terjejas.
Potensi Kerentanan Keselamatan
Mengurangkan Risiko
Contoh Kelas PHP untuk Penyulitan:
class Encryption { private $key = ''; private $algorithm = ''; public function __construct($key, $algorithm = MCRYPT_RIJNDAEL_128) { $this->key = $key; $this->algorithm = $algorithm; } public function encrypt($data) { $iv = mcrypt_create_iv(mcrypt_get_iv_size($this->algorithm, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); return mcrypt_encrypt($this->algorithm, $this->key, $data, MCRYPT_MODE_CBC, $iv) . $iv; } public function decrypt($data) { $ivSize = mcrypt_get_iv_size($this->algorithm, MCRYPT_MODE_CBC); $iv = substr($data, 0, $ivSize); return mcrypt_decrypt($this->algorithm, $this->key, substr($data, $ivSize), MCRYPT_MODE_CBC, $iv); } }
Atas ialah kandungan terperinci Bagaimanakah Penyulitan Dua Hala Boleh Menyimpan dan Mendapatkan Kata Laluan Selamat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!