Chiffre un message en utilisant un nonce et une clé secrète (sans authentification)

# sodium_crypto_stream_xchacha20_xor_ic

(PHP 8 >= 8.2.0)

sodium_crypto_stream_xchacha20_xor_ic — Chiffre un message en utilisant un nonce et une clé secrète (sans authentification)

### Description

function sodium_crypto_stream_xchacha20_xor_ic(
#[\SensitiveParameter]string `$message`,
string `$nonce`,
int `$counter`,
#[\SensitiveParameter]string `$key`
): string

Cette fonction est similaire à sodium_crypto_stream_xchacha20_xor() mais ajoute la possibilité de définir la valeur initiale du compteur de blocs à une valeur non nulle. Cela permet d'accéder directement à n'importe quel bloc sans avoir à calculer les précédents.

Attention

Ce chiffrement est non authentifié, et ne prévient pas les attaques par texte chiffré choisi. Il faut s'assurer de combiner le texte chiffré avec un code d'authentification de message, par exemple avec la fonction sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(), ou sodium_crypto_auth().

### Liste de paramètres

`message`
  Le message à chiffrer.
`nonce`
  Un nonce de 24 octets.
`counter`
  La valeur initiale du compteur de blocs.
`key`
  Clé, possiblement générée par la fonction sodium_crypto_stream_xchacha20_keygen().

### Valeurs de retour

Le texte chiffré, ou ou `false` si une erreur survient.

### Exemples

Exemple #1 Exemple de sodium_crypto_stream_xchacha20_xor_ic()

    <?php
    $n2 = random_bytes(SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES);
    $left  = str_repeat("\x01", 64);
    $right = str_repeat("\xfe", 64);

    // Tout en une fois :
    $stream7_unified = sodium_crypto_stream_xchacha20_xor($left . $right, $n2, $key);

    // Par morceaux, avec un compteur initial :
    $stream7_left  = sodium_crypto_stream_xchacha20_xor_ic($left, $n2, 0, $key);
    $stream7_right = sodium_crypto_stream_xchacha20_xor_ic($right, $n2, 1, $key);
    $stream7_concat = $stream7_left . $stream7_right;

    var_dump(strlen($stream7_concat));
    var_dump($stream7_unified === $stream7_concat);
    ?>

Résultat de l'exemple ci-dessus est similaire à :

    int(128)
    bool(true)

### Voir aussi

- sodium_crypto_stream_xchacha20_xor() - Chiffre une donnée en utilisant un nonce et une clé secrète (sans authentification)

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open