函式名稱:sodium_crypto_secretstream_xchacha20poly1305_pull()
適用版本:PHP 7.2.0及以上
函式描述:該函式用於從加密的密文流中解密並獲取原始訊息。
用法: sodium_crypto_secretstream_xchacha20poly1305_pull( string &$state, string &$msg, string $encrypted_message, string $ad = '' ) : string|false
引數:
- &$state: 加密過程中生成的狀態資訊,作為引用傳遞並在解密過程中被更新。
- &$msg: 解密後的原始訊息,作為引用傳遞並被填充。
- $encrypted_message: 加密的密文流。
- $ad (可選): 附加的認證資料。
返回值:
- 成功解密並獲取原始訊息時,返回解密後的原始訊息。
- 解密失敗時,返回false。
示例:
// 初始化金鑰和狀態 $key = random_bytes(SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES); $state = sodium_crypto_secretstream_xchacha20poly1305_init_push($key);
// 加密訊息 $message = "Hello, World!"; $encrypted_message = sodium_crypto_secretstream_xchacha20poly1305_push($state, $message, '', SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE);
// 解密訊息 $decrypted_message = ''; $result = sodium_crypto_secretstream_xchacha20poly1305_pull($state, $decrypted_message, $encrypted_message);
if ($result === false) { echo "解密失敗"; } else { echo "解密成功:".$decrypted_message; }
注意事項:
- 在使用該函式之前,必須先呼叫sodium_crypto_secretstream_xchacha20poly1305_init_push()函式初始化金鑰和狀態。
- 解密過程中,$state引數會被更新,因此需要在每個解密操作之間保持狀態。
- 附加的認證資料($ad引數)在解密時需要與加密時使用的認證資料保持一致,以確保訊息的完整性和真實性。
熱門工具排行榜