查詢

sodium_crypto_secretstream_xchacha20poly1305_pull()函式—用法及示例

「 從加密的密文流中解密並獲取原始訊息 」


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

注意事項:

  1. 在使用該函式之前,必須先呼叫sodium_crypto_secretstream_xchacha20poly1305_init_push()函式初始化金鑰和狀態。
  2. 解密過程中,$state引數會被更新,因此需要在每個解密操作之間保持狀態。
  3. 附加的認證資料($ad引數)在解密時需要與加密時使用的認證資料保持一致,以確保訊息的完整性和真實性。
補充糾錯
熱門PHP函式
分享連結