Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi back-end PHP?

Bagaimana untuk melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi back-end PHP?

王林
王林asal
2023-08-05 15:06:161377semak imbas

Bagaimana untuk melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi backend PHP?

Semasa pembangunan fungsi back-end PHP, keselamatan data adalah isu yang sangat penting. Satu langkah penting ialah penyulitan dan penyahsulitan data sensitif. Berikut akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi penyulitan dan penyahsulitan data.

PHP menyediakan pelbagai fungsi penyulitan yang boleh digunakan untuk menyulitkan dan menyahsulit pelbagai data. Algoritma penyulitan yang biasa digunakan termasuk algoritma penyulitan simetri dan algoritma penyulitan asimetri. Algoritma penyulitan simetri menggunakan kunci yang sama untuk operasi penyulitan dan penyahsulitan, pantas dan sesuai untuk menyulitkan sejumlah besar data. Algoritma penyulitan asimetri menggunakan kunci awam dan kunci peribadi untuk operasi penyulitan dan penyahsulitan Ia mempunyai keselamatan yang tinggi dan sesuai untuk menyulitkan sejumlah kecil data.

Berikut ialah contoh penggunaan algoritma penyulitan simetri untuk penyulitan dan penyahsulitan data:

// Generate key
$secretKey = 'ThisIsTheSecretKey';

//Data encryption function encryption , $secretKey) {

$encryptedData = openssl_encrypt($data, 'AES-256-CBC', $secretKey, OPENSSL_RAW_DATA, 'ThisIsTheInitializationVector');
return base64_encode($encryptedData);

}

// Fungsi penyahsulitan

fungsi nyahsulitData($encryptedData, $secretKey) {

$decryptedData = openssl_decrypt(base64_decode($encryptedData), 'AES-256-CBC', $secretKey, OPENSSL_RAW_DATA, 'ThisIsTheInitializationVector');
return $decryptedData;

}

// Data yang disulitkan

= '$plain;🎎 mesej rahsia ini $encryptedText = encryptedData($plainText, $secretKey);
echo 'Data yang disulitkan: ' .$encryptedText "
";

// Data yang dinyahsulit

$decryptedText = decryptedText($seencryptedText. data: ' . $decryptedText . Kemudian tentukan fungsi encryptData() dan decryptData() untuk melaksanakan operasi penyulitan dan penyahsulitan data. Fungsi encryptData() menggunakan fungsi openssl_encrypt() untuk menyulitkan data, dan kemudian menggunakan fungsi base64_encode() untuk mengekod data yang disulitkan. Fungsi decryptData() menggunakan fungsi base64_decode() untuk menyahkod data yang dikodkan, dan kemudian menggunakan fungsi openssl_decrypt() untuk menyahsulit data yang dinyahkod.


Contoh di atas menggunakan algoritma penyulitan simetri AES-256-CBC untuk operasi penyulitan dan penyahsulitan data. Vektor kunci dan permulaan perlu diubah suai mengikut penggunaan sebenar. Pastikan juga pelayan memasang sambungan OpenSSL.

Selain algoritma penyulitan simetri, PHP juga menyediakan algoritma penyulitan asimetri, yang biasa digunakan ialah algoritma RSA. Kod sampel untuk penyulitan dan penyahsulitan data menggunakan algoritma RSA adalah seperti berikut:

// Jana pasangan kunci

$res = openssl_pkey_new();

openssl_pkey_export($res, $private =Key$lic);

openssl_pkey_get_details ($res)['key'];

// Fungsi penyulitan

function encryptData($data, $publicKey) {

openssl_public_encrypt($data, $encryptedData, $publicKey);
return base64_encode($encryptedData);

}

// Fungsi penyahsulitan
function decryptData ($

KekunciData,)
openssl_private_decrypt(base64_decode($encryptedData), $decryptedData, $privateKey);
return $decryptedData;

}

// Data yang disulitkan

$plainText = 'Ini adalah mesej rahsia.';

$encryptedText = encryptedData($plainText, $publicKey);

echo 'Data yang disulitkan: ' ."$enkripsi"

// Nyahsulit data

$decryptedText = nyahsulitData($encryptedText, $privateKey);

echo 'Data yang dinyahsulit: ' . ) Fungsi menjana pasangan kunci dan kemudian menggunakan fungsi openssl_pkey_export() dan openssl_pkey_get_details() untuk mendapatkan kunci peribadi dan awam. Kemudian tentukan fungsi encryptData() dan decryptData() untuk melaksanakan operasi penyulitan dan penyahsulitan data. Fungsi encryptData() menggunakan fungsi openssl_public_encrypt() untuk menyulitkan data, dan fungsi decryptData() menggunakan fungsi openssl_private_decrypt() untuk menyahsulit data.


Contoh di atas menggunakan algoritma penyulitan asimetri RSA untuk operasi penyulitan dan penyahsulitan data. Dalam penggunaan sebenar, anda perlu memberi perhatian untuk melindungi keselamatan kunci persendirian dan mengemas kini pasangan kunci tepat pada masanya.

Melalui contoh di atas, kita boleh belajar cara menggunakan PHP untuk melaksanakan fungsi penyulitan dan penyahsulitan data. Dalam aplikasi praktikal, algoritma penyulitan yang sesuai boleh dipilih mengikut keperluan perniagaan tertentu, dan kunci dan vektor permulaan yang sesuai boleh dipilih mengikut situasi sebenar. Pada masa yang sama, anda juga perlu memberi perhatian untuk melindungi keselamatan kunci untuk mengelakkan kunci daripada bocor dan menyebabkan data dinyahsulit.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi back-end PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn