查詢

openssl_encrypt()函式—用法及示例

「 對資料進行加密 」


函式名稱: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 ]]]]] )

引數說明:

  1. $data:需要加密的資料,可以是字串或者是位元組陣列。
  2. $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
  3. $password:加密密碼,字串型別。
  4. $options:可選引數,指定加密模式或填充方式。預設為0,表示使用PKCS7填充。
  5. $iv:可選引數,初始化向量,字串型別。對於 CBC、CFB、OFB 和 STREAM 模式,必須提供一個初始化向量。對於 ECB 模式,不需要提供。
  6. $tag:可選引數,用於儲存驗證標籤。只有在使用 GCM 模式時才需要提供。
  7. $aad:可選引數,附加的認證資料,字串型別。只有在使用 GCM 模式時才需要提供。
  8. $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!

注意事項:

  1. 在使用 CBC、CFB、OFB 和 STREAM 模式時,必須提供一個隨機生成的初始化向量(IV)。
  2. 密碼應該是足夠強大的,以確保加密的安全性。
  3. 加密和解密時的引數(資料、加密演算法、密碼、選項和初始化向量)必須一致,否則解密將失敗。
補充糾錯
上一個函式: openssl_error_string()函式
下一個函式: openssl_digest()函式
熱門PHP函式
分享連結