函式名稱:sodium_crypto_box_open()
函式描述:sodium_crypto_box_open()函式用於解密已加密的訊息,使用公鑰加密和私鑰解密的非對稱加密演算法。
適用版本:PHP 7.2.0及以上版本
語法:string sodium_crypto_box_open(string $ciphertext, string $nonce, string $keypair)
引數:
- $ciphertext:加密的訊息,以字串形式傳遞。
- $nonce:用於加密的隨機數,以字串形式傳遞。
- $keypair:公鑰和私鑰的組合,以字串形式傳遞。
返回值:解密後的原始訊息,以字串形式返回。如果解密失敗,返回false。
示例:
// 定義公鑰和私鑰
$keypair = sodium_crypto_box_keypair();
// 獲取公鑰和私鑰
$publicKey = sodium_crypto_box_publickey($keypair);
$privateKey = sodium_crypto_box_secretkey($keypair);
// 原始訊息
$message = "Hello, world!";
// 用公鑰加密訊息
$nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES); // 生成隨機數
$ciphertext = sodium_crypto_box($message, $nonce, $publicKey, $privateKey);
// 解密訊息
$decryptedMessage = sodium_crypto_box_open($ciphertext, $nonce, $keypair);
// 輸出解密後的原始訊息
echo $decryptedMessage;
注意事項:
- 在使用sodium_crypto_box_open()函式之前,需要先生成公鑰和私鑰對,可以使用sodium_crypto_box_keypair()函式生成。
- 解密前需要確保傳遞正確的密文、隨機數和金鑰對。
- 解密成功後,返回的是原始訊息的字串形式。
- 如果解密失敗,函式會返回false,需要對返回值進行檢查。
更多資訊和示例可以參考PHP官方文件:https://www.php.net/manual/en/function.sodium-crypto-box-open.php