Teknik penyulitan data dalam PHP

WBOY
Lepaskan: 2023-05-23 13:24:01
asal
995 orang telah melayarinya

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.

  1. Penyulitan menggunakan fungsi cincang

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); //加密后的密码
Salin selepas log masuk

Kelebihan menggunakan fungsi cincang untuk penyulitan ialah selepas kata laluan disulitkan, ia tidak boleh dinyahsulit kembali kepada teks biasa Boleh disahkan.

  1. Penyulitan simetri

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);
Salin selepas log masuk

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.

  1. Penyulitan Asimetri

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);
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan