PHP在加密領域表現優異,具體而言PHP Crypto代表著PHP5-7.0的openssl擴展以及PHP7.1+的新Sodium擴展。在這篇文章中我們將討論這兩個擴展的使用以及它們為我們提供了什么樣的加密工具。
openssl擴展可以在PHP5-7.0中使用,它可以加密各種數據,例如URL、電子郵件、文本或文件,而且功能豐富,包括提供公共密鑰加密和私有密鑰解密。在此舉一個簡單的例子:對于URL加密。下面的代碼演示如何借助openssl擴展加密URL:
$url = 'https://www.example.com'; $key = "ThisIsMySecretKeyForEncryption"; // encrypt url with key $encrypted_url = openssl_encrypt($url, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, '1234567891234567'); // encode the encrypted url $encoded_url = base64_encode($encrypted_url); echo $encoded_url; // NDlmNzlhZmVyZTQ1MTlmMzFiY2M3N2RlZjFhNDU5NzI=
相反地,您可以使用openssl_decrypt恢復URL,如下所示:
$encrypted_url = base64_decode("NDlmNzlhZmVyZTQ1MTlmMzFiY2M3N2RlZjFhNDU5NzI="); $key = "ThisIsMySecretKeyForEncryption"; // decrypt url with key $decrypted_url = openssl_decrypt($encrypted_url, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, '1234567891234567'); echo $decrypted_url; // https://www.example.com
現在,我們將看一下在PHP 7.2中引入的新的Sodium擴展。在此之前,在PHP中使用Sodium被認為是不安全的。這是到現在為止,Sodium擴展的使用受到推薦。這個擴展提供了更簡潔的API,并執行最新的密碼安全建議。下面是Sodium擴展的一個例子:
$message = "This is a secret message"; $key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES); $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); // encrypt $ciphertext = sodium_crypto_secretbox($message, $nonce, $key); // decrypt $plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key); echo $plaintext; // This is a secret message
總之,無論您使用的是openssl擴展還是Sodium擴展,PHP加密都是一項強大且必要的工具。無論你需要加密的是什么,這兩個擴展都能夠滿足你的需要。加密可以使您的數據更加安全,因此它應該是每個開發人員的首要任務之一。
上一篇java對象和副本