PHP, sebagai bahasa skrip sebelah pelayan, sering digunakan untuk mengendalikan data sensitif. Penyulitan data adalah sangat penting apabila menghantar atau menyimpan data sensitif. Artikel ini akan memperkenalkan teknik penyulitan data dalam PHP.
Fungsi cincang ialah fungsi yang memampatkan mesej dengan panjang sewenang-wenangnya ke dalam ringkasan panjang tetap. PHP mempunyai fungsi cincang biasa terbina dalam, seperti md5(), sha1(), dsb.
Berikut ialah contoh pencincangan kata laluan menggunakan SHA256:
$password = 'password123'; $hashedPassword = hash('sha256', $password); //加密后的密码
Kelebihan menggunakan fungsi cincang untuk penyulitan ialah selepas kata laluan disulitkan, ia tidak boleh dinyahsulit kembali kepada teks biasa Boleh disahkan.
Penyulitan simetri merujuk kepada kaedah penyulitan yang menggunakan kunci yang sama untuk penyulitan dan penyahsulitan. Melaksanakan penyulitan simetri dalam PHP boleh menggunakan sambungan openssl. Fungsi penyulitan simetri termasuk openssl_encrypt() dan openssl_decrypt().
Berikut ialah kod sampel:
$data = "这是一段敏感内容"; $method = 'AES-256-CBC'; $key = md5('my_secret_key'); $iv = md5('my_iv'); //加密 $encrypted_data = openssl_encrypt($data, $method, $key, 0, $iv); //解密 $decrypted_data = openssl_decrypt($encrypted_data, $method, $key, 0, $iv);
Dalam kod sampel ini, algoritma AES-256-CBC digunakan untuk penyulitan. Antaranya, kunci menggunakan algoritma cincang md5 untuk memproses "kunci_rahsia saya", dan IV menggunakan algoritma cincang md5 untuk memproses "my_iv".
Perlu diingat bahawa apabila menggunakan penyulitan simetri, keselamatan kunci perlu dipastikan, jika tidak, kunci itu mungkin diperolehi oleh penggodam dan retak.
Dalam penyulitan asimetri, kunci berbeza digunakan untuk penyulitan dan penyahsulitan. Penyulitan asimetri boleh dilaksanakan dalam PHP menggunakan sambungan openssl. Fungsi utama penyulitan asimetri ialah openssl_public_encrypt(), openssl_private_decrypt(), openssl_private_encrypt() dan openssl_public_decrypt().
Berikut ialah kod sampel:
$data = "这是一段敏感内容"; //生成密钥对 $config = array( "digest_alg" => "sha512", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ); $res = openssl_pkey_new($config); openssl_pkey_export($res, $private_key); $public_key = openssl_pkey_get_details($res); $public_key = $public_key["key"]; //加密 openssl_public_encrypt($data, $encrypted, $public_key); //解密 openssl_private_decrypt($encrypted, $decrypted, $private_key);
Dalam kod sampel ini, sepasang kunci awam dan peribadi RSA mula-mula dijana, kemudian kunci awam digunakan untuk penyulitan, dan kunci peribadi digunakan untuk penyahsulitan.
Perlu diingat bahawa dalam penyulitan asimetri, kunci persendirian perlu disimpan dengan betul, jika tidak terdapat risiko kebocoran.
Ringkasnya, teknik penyulitan data dalam PHP termasuk penyulitan fungsi cincang, penyulitan simetri dan penyulitan asimetri. Dalam aplikasi praktikal, kita perlu memilih kaedah penyulitan yang sesuai mengikut situasi tertentu dan memastikan keselamatan kunci.
Atas ialah kandungan terperinci Teknik penyulitan data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!