English | 简体中文 | 繁體中文
查询

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函数
分享链接