函式名:openssl_verify()
適用版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
用法:openssl_verify(string $data, string $signature, mixed $public_key, int $algorithm = OPENSSL_ALGO_SHA256): int|bool
說明:openssl_verify() 函式用於驗證透過 openssl_sign() 函式簽名的資料。它透過使用公鑰和簽名來驗證資料的完整性和真實性。
引數:
- $data:要驗證的資料,通常是原始資料的雜湊值。
- $signature:簽名資料。
- $public_key:公鑰,通常是證書檔案路徑或者公鑰字串。
- $algorithm:可選引數,指定使用的雜湊演算法,預設為 OPENSSL_ALGO_SHA256。
返回值:
- 如果簽名驗證成功,返回1;
- 如果簽名驗證失敗,返回0;
- 如果發生錯誤,返回-1。
示例:
<?php
// 原始資料
$data = "Hello, world!";
// 簽名資料
$signature = base64_decode("...");
// 公鑰
$public_key = file_get_contents("public_key.pem");
// 驗證簽名
$result = openssl_verify($data, $signature, $public_key);
if ($result == 1) {
echo "簽名驗證成功!";
} elseif ($result == 0) {
echo "簽名驗證失敗!";
} else {
echo "發生錯誤:" . openssl_error_string();
}
?>
上述示例中,我們首先定義了原始資料、簽名資料和公鑰。然後,使用 openssl_verify() 函式來驗證簽名。如果返回值為1,則表示簽名驗證成功;如果返回值為0,則表示簽名驗證失敗;如果返回值為-1,則表示發生了錯誤,我們可以透過 openssl_error_string() 函式獲取具體的錯誤資訊。