Rumah > pembangunan bahagian belakang > tutorial php > Langkah terperinci untuk melaksanakan fungsi pengesahan keselamatan e-mel dalam PHP

Langkah terperinci untuk melaksanakan fungsi pengesahan keselamatan e-mel dalam PHP

王林
Lepaskan: 2023-05-23 16:32:02
asal
1645 orang telah melayarinya

Dengan populariti Internet dan perkembangan e-dagang, e-mel telah menjadi kaedah komunikasi yang paling biasa digunakan untuk orang ramai. Walau bagaimanapun, isu keselamatan e-mel telah beransur-ansur menjadi perhatian. Untuk mengelakkan kebocoran maklumat sensitif dan pembiakan spam, kami perlu melakukan pengesahan keselamatan pada e-mel. Artikel ini akan memperkenalkan anda kepada langkah terperinci untuk melaksanakan fungsi pengesahan keselamatan e-mel dalam PHP.

1. Prinsip pengesahan keselamatan e-mel

Prinsip pengesahan keselamatan e-mel adalah menggunakan teknologi penyulitan kunci awam dan teknologi tandatangan digital untuk mengesahkan penyulitan kunci dan tandatangan digital e-mel daripada e-mel.

2. Langkah untuk PHP melaksanakan pengesahan keselamatan e-mel

1 Jana kunci awam dan peribadi

Pertama, kita perlu menjana kunci awam dan peribadi. Kunci awam adalah awam dan digunakan untuk menyulitkan e-mel; Anda boleh menggunakan pustaka sambungan openssl untuk menjana kunci awam dan peribadi:

$key = openssl_pkey_new(array(
"digest_alg" => "sha512",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
Salin selepas log masuk

Tatasusunan $key yang dijana mengandungi kunci awam dan kunci peribadi, dengan kunci awam ialah:

$keyDetails = openssl_pkey_get_details($key);
$publicKey = $keyDetails["key"];
Salin selepas log masuk

Kunci peribadi ialah:

openssl_pkey_export($key, $privateKey);
Salin selepas log masuk

2. E-mel yang disulitkan

Selepas e-mel disulitkan dengan kunci awam, hanya pemegang kunci peribadi boleh menyahsulitnya. Anda boleh menggunakan fungsi openssl_public_encrypt dalam pustaka sambungan openssl untuk melaksanakan penyulitan e-mel:

openssl_public_encrypt($message, $encrypted, $publicKey);
Salin selepas log masuk

di mana $message ialah kandungan e-mel yang akan disulitkan dan $encrypted ialah hasil yang disulitkan.

3. Tandatangan digital

Tandatangan digital ialah cara penting untuk mengesahkan ketulenan e-mel Anda boleh menggunakan fungsi openssl_sign dalam perpustakaan sambungan openssl untuk melaksanakan tandatangan digital:

openssl_sign($message, $signature, $privateKey, OPENSSL_ALGO_SHA512);
Salin selepas log masuk
<. 🎜>di mana $ mesej ialah kandungan e-mel yang akan ditandatangani, dan $tandatangan ialah hasil yang ditandatangani.

4. Sahkan e-mel

Selepas menerima e-mel, penerima perlu mengesahkan e-mel, termasuk menyahsulit teks sifir e-mel dan mengesahkan sama ada tandatangan digital e-mel itu betul. Anda boleh menggunakan fungsi openssl_private_decrypt dalam perpustakaan sambungan openssl untuk menyahsulit e-mel:

openssl_private_decrypt($encrypted, $decrypted, $privateKey);
Salin selepas log masuk

di mana $encrypted ialah kandungan e-mel yang disulitkan dan $decrypted ialah hasil yang didekripsi.

Anda juga perlu menggunakan fungsi openssl_verify dalam perpustakaan sambungan openssl untuk mengesahkan tandatangan digital e-mel:

openssl_verify($message, $signature, $publicKey, OPENSSL_ALGO_SHA512);
Salin selepas log masuk

di mana $message ialah kandungan e-mel, $signature ialah tandatangan digital, dan $publicKey ialah kunci awam .

5. Kod lengkap

Berikut ialah contoh kod PHP yang lengkap:

// 生成公钥和私钥
$key = openssl_pkey_new(array(
    "digest_alg" => "sha512",
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$keyDetails = openssl_pkey_get_details($key);
$publicKey = $keyDetails["key"];
openssl_pkey_export($key, $privateKey);

// 加密邮件
$message = "Hello, this is a test message.";
openssl_public_encrypt($message, $encrypted, $publicKey);

// 数字签名
openssl_sign($message, $signature, $privateKey, OPENSSL_ALGO_SHA512);

// 验证邮件
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
openssl_verify($message, $signature, $publicKey, OPENSSL_ALGO_SHA512);
Salin selepas log masuk
3 Ringkasan

Pengesahan keselamatan e-mel adalah untuk memastikan penghantaran e-mel adalah cara seks penting yang selamat dan tulen. Artikel ini memperkenalkan langkah terperinci untuk PHP untuk melaksanakan fungsi pengesahan keselamatan e-mel, termasuk menjana kunci awam dan peribadi, menyulitkan e-mel, tandatangan digital dan mengesahkan e-mel. Melalui langkah-langkah ini, kami boleh mencapai pengesahan keselamatan e-mel untuk memastikan maklumat sensitif tidak bocor dan dihantar dengan selamat.

Atas ialah kandungan terperinci Langkah terperinci untuk melaksanakan fungsi pengesahan keselamatan e-mel dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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