Awas: Elakkan menyulitkan kata laluan menggunakan kaedah ini; sebaliknya, gunakan algoritma pencincangan kata laluan untuk storan kata laluan yang selamat.
Apabila menggunakan PHP 5.4 atau lebih baru dan inginkan kemudahalihan kod, gunakan perpustakaan sedia ada yang menyediakan penyulitan yang disahkan. Kaedah Openssl, seperti openssl_encrypt() dan openssl_decrypt(), boleh digunakan sebaik sahaja anda memilih kaedah penyulitan.
Pertimbangkan untuk menggunakan Advanced Encryption Standard (AES) dalam Mod CTR untuk penyulitan. Kaedah ini menawarkan keseimbangan terbaik antara keselamatan dan prestasi. Rujuk openssl_get_cipher_methods() untuk mendapatkan senarai kaedah yang disokong.
Kelas PHP berikut menyediakan pembungkus penyulitan/penyahsulitan mudah menggunakan OpenSSL:
class UnsafeCrypto { const METHOD = 'aes-256-ctr'; public static function encrypt($message, $key, $encode = false) { // ... if ($encode) { return base64_encode($nonce.$ciphertext); } return $nonce.$ciphertext; } public static function decrypt($message, $key, $encoded = false) { // ... $plaintext = openssl_decrypt( $ciphertext, self::METHOD, $key, OPENSSL_RAW_DATA, $nonce ); return $plaintext; } }
Untuk keselamatan yang dipertingkatkan, laksanakan pengesahan untuk mengesahkan integriti data yang disulitkan:
class SaferCrypto extends UnsafeCrypto { const HASH_ALGO = 'sha256'; public static function encrypt($message, $key, $encode = false) { // ... if ($encode) { return base64_encode($mac.$ciphertext); } // Prepend MAC to the ciphertext and return to caller return $mac.$ciphertext; } public static function decrypt($message, $key, $encoded = false) { // ... $calculated = hash_hmac( self::HASH_ALGO, $ciphertext, $authKey, true ); if (!self::hashEquals($mac, $calculated)) { throw new Exception('Encryption failure'); } // Pass to UnsafeCrypto::decrypt $plaintext = parent::decrypt($ciphertext, $encKey); return $plaintext; } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Penyulitan dan Pengesahan Dua Hala Mudah dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!