查詢

sodium_crypto_box_open()函式—用法及示例

「 解密已加密的訊息,使用公鑰加密和私鑰解密的非對稱加密演算法 」


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

注意事項:

  1. 在使用sodium_crypto_box_open()函式之前,需要先生成公鑰和私鑰對,可以使用sodium_crypto_box_keypair()函式生成。
  2. 解密前需要確保傳遞正確的密文、隨機數和金鑰對。
  3. 解密成功後,返回的是原始訊息的字串形式。
  4. 如果解密失敗,函式會返回false,需要對返回值進行檢查。

更多資訊和示例可以參考PHP官方文件:https://www.php.net/manual/en/function.sodium-crypto-box-open.php

補充糾錯
熱門PHP函式
分享連結