sodium_crypto_generichash_final

Complete the hash

&reftitle.description; `string` `sodium_crypto_generichash_final` `string` `state` `int` `length` `SODIUM_CRYPTO_GENERICHASH_BYTES`

The finalization method for the streaming generichash API.

&reftitle.parameters;

`state`

- Hash state returned from `sodium_crypto_generichash_init`

`length`

- Output length.

&reftitle.returnvalues;

Cryptographic hash.

&reftitle.examples;

### `sodium_crypto_generichash_final` example

    <?php
    $messages = [random_bytes(32), random_bytes(32), random_bytes(16)];
    $state = sodium_crypto_generichash_init('', 32);
    foreach ($messages as $message) {
        sodium_crypto_generichash_update($state, $message);
    }

    $final = sodium_crypto_generichash_final($state, 32);
    var_dump(sodium_bin2hex($final));

    $allAtOnce = sodium_crypto_generichash(implode('', $messages));
    var_dump(sodium_bin2hex($allAtOnce));
    ?>

&example.outputs.similar;

    string(64) "a2939a9163cb7c796ec28e01028489e72475c136b2697ea59e3e760ab4a8ab20"
    string(64) "a2939a9163cb7c796ec28e01028489e72475c136b2697ea59e3e760ab4a8ab20"