函式名稱:openssl_encrypt()
適用版本:PHP 5 >= 5.3.0, PHP 7
函式描述:openssl_encrypt() 函式用於對資料進行加密。
語法:string openssl_encrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" [, string &$tag = NULL [, string $aad = "" [, int $tag_length = 16 ]]]]] )
引數說明:
- $data:需要加密的資料,可以是字串或者是位元組陣列。
- $method:加密演算法,可以是以下之一:
- AES-128-CBC
- AES-192-CBC
- AES-256-CBC
- AES-128-CTR
- AES-192-CTR
- AES-256-CTR
- AES-128-GCM
- AES-192-GCM
- AES-256-GCM
- $password:加密密碼,字串型別。
- $options:可選引數,指定加密模式或填充方式。預設為0,表示使用PKCS7填充。
- $iv:可選引數,初始化向量,字串型別。對於 CBC、CFB、OFB 和 STREAM 模式,必須提供一個初始化向量。對於 ECB 模式,不需要提供。
- $tag:可選引數,用於儲存驗證標籤。只有在使用 GCM 模式時才需要提供。
- $aad:可選引數,附加的認證資料,字串型別。只有在使用 GCM 模式時才需要提供。
- $tag_length:可選引數,用於指定生成的認證標籤長度。只有在使用 GCM 模式時才需要提供。
返回值:加密後的資料,以字串形式返回。
示例:
$data = "Hello, world!";
$method = "AES-256-CBC";
$password = "myPassword";
$options = 0;
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
$encrypted = openssl_encrypt($data, $method, $password, $options, $iv);
echo "加密後的資料:".$encrypted."\n";
$decrypted = openssl_decrypt($encrypted, $method, $password, $options, $iv);
echo "解密後的資料:".$decrypted."\n";
輸出結果:
加密後的資料:5B7n0m0qMF0nXbU2XnU0xY0oXf7n3V5l1G6q5u5n4y1=
解密後的資料:Hello, world!
注意事項:
- 在使用 CBC、CFB、OFB 和 STREAM 模式時,必須提供一個隨機生成的初始化向量(IV)。
- 密碼應該是足夠強大的,以確保加密的安全性。
- 加密和解密時的引數(資料、加密演算法、密碼、選項和初始化向量)必須一致,否則解密將失敗。