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

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

王林
王林asal
2023-05-23 16:31:411466semak imbas

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,
));

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

$keyDetails = openssl_pkey_get_details($key);
$publicKey = $keyDetails["key"];

Kunci peribadi ialah:

openssl_pkey_export($key, $privateKey);

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);

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);
<.>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);

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);

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);

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:
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