AES(Advanced Encryption Standard),是一種對稱密鑰加密算法,被廣泛應用于數據傳輸和保護領域。PHP語言也提供了相關的函數和工具庫,使得實現AES加密變得相對簡單易用。
例如,我們可以使用反復調用 mcrypt_?encrypt() 和 mcrypt_?decrypt() 函數來實現AES-128-CBC加密。
$key = 'secret-123456'; $payload = 'hello, world!'; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $payload, MCRYPT_MODE_CBC, $iv); $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
這里,我們首先指定了一個128位的密鑰和待加密/解密的數據。然后,通過 mcrypt_get_iv_size() 函數獲取CBC模式下需要的IV向量大小,并用mcrypt_create_iv()生成一個隨機的初始向量。最后,使用mcrypt_encrypt()對數據進行加密,mcrypt_decrypt()對數據進行解密,得到最終結果。
另外,也可以使用OpenSSL擴展中的openssl_encrypt() / openssl_decrypt() 函數來實現AES加密。這些函數支持更多的加密算法,在處理大量數據時也有更高的性能表現。
$key = 'secret-123456'; $payload = 'hello, world!'; $method = 'aes-128-cbc'; $iv_size = openssl_cipher_iv_length($method); $iv = openssl_random_pseudo_bytes($iv_size); $encrypted = openssl_encrypt($payload, $method, $key, OPENSSL_RAW_DATA, $iv); $decrypted = openssl_decrypt($encrypted, $method, $key, OPENSSL_RAW_DATA, $iv);
這里,我們指定了密鑰,待加密/解密的數據和算法(使用CBC模式和128位密鑰)。通過openssl_cipher_iv_length()函數獲取IV向量大小,然后用openssl_random_pseudo_bytes()獲取一個隨機的IV向量。最后,分別調用openssl_encrypt()、openssl_decrypt()函數對數據進行加密和解密。
綜上,AES加密在PHP中的實現相對來說比較簡單。我們只需要了解加密算法的原理,并使用適當的PHP函數即可輕松實現加密和解密操作。