函式名稱:sodium_crypto_secretbox_open()
函式功能:在使用libsodium擴充套件的PHP版本中,sodium_crypto_secretbox_open()函式用於解密透過sodium_crypto_secretbox()函式加密的密文。
函式引數:sodium_crypto_secretbox_open($ciphertext, $nonce, $key)
- $ciphertext:要解密的密文,型別為字串。
- $nonce:用於加密的隨機字串,型別為字串。
- $key:加密金鑰,型別為字串。
返回值:解密成功時返回明文字串,解密失敗時返回false。
適用版本:該函式適用於PHP 7.2.0及以上版本,並且需要安裝libsodium擴充套件。
示例程式碼:
// 加密金鑰和隨機字串
$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
// 要加密的明文
$message = "Hello, World!";
// 使用金鑰和隨機字串加密明文
$ciphertext = sodium_crypto_secretbox($message, $nonce, $key);
// 解密密文
$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if ($plaintext !== false) {
echo "解密成功:".$plaintext;
} else {
echo "解密失敗!";
}
在上面的示例中,我們首先生成了一個加密金鑰和一個隨機字串。然後,我們使用金鑰和隨機字串對明文進行加密,並將加密後的密文儲存在$ciphertext變數中。
接下來,我們使用相同的金鑰和隨機字串呼叫sodium_crypto_secretbox_open()函式來解密密文。如果解密成功,將會返回解密後的明文字串,並輸出"解密成功:"加上解密後的明文。如果解密失敗,將輸出"解密失敗!"。
注意:在使用sodium_crypto_secretbox_open()函式之前,需要先呼叫sodium_crypto_secretbox_keygen()函式生成一個加密金鑰,並呼叫random_bytes()函式生成一個隨機字串作為nonce。
熱門工具排行榜