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);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
openssl_verify($message, $signature, $publicKey, OPENSSL_ALGO_SHA512);
// 生成公钥和私钥 $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);
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!