hash_init()
hash_init() — Initialize an incremental hashing context.
Built-in function of PHP 8.5. The manual lists it as available in PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.
Signature
hash_init(string $algo, int $flags = 0, string $key = "", array $options = []): HashContext
Parameters
| Parameter | Type | What it takes |
|---|---|---|
| $algo | string | Name of selected hashing algorithm (e.g. "sha256"). For a list of supported algorithms see hash_algos(). Note: Non-cryptographic hash functions are not allowed if the HASH_HMAC flag is specified. |
| $flags | int | Optional settings for hash generation, currently supports only one option: HASH_HMAC. When specified, the key must be specified. |
| $key | string | When HASH_HMAC is specified for flags, a shared secret key to be used with the HMAC hashing method must be supplied in this parameter. |
| $options | array | An array of options for the various hashing algorithms. Currently, only the "seed" parameter is supported by the MurmurHash variants. |
Return value
Returns a Hashing Context for use with hash_update(), hash_update_stream(), hash_update_file(), and hash_final().
Example
A runnable snippet:
$hash = hash('sha256', 'The quick brown fox jumped over the lazy dog.'); $ctx = hash_init('sha256'); hash_update($ctx, 'The quick brown fox '); hash_update($ctx, 'jumped over the lazy dog.'); $incremental_hash = hash_final($ctx); echo $incremental_hash, PHP_EOL; var_dump($hash === $incremental_hash);
Output:
68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483 bool(true)
Changelog
| Version | Change |
|---|---|
| 8.4.0 | Passing options of a wrong type is now deprecated. |
| 8.1.0 | The options parameter has been added. |
| 8.0.0 | Now throws an ValueError exception if the algo is unknown or is a non-cryptographic hash function, or if key is empty. Previously, false was returned and an E_WARNING message was emitted. |
| 7.2.0 | Usage of non-cryptographic hash functions (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) with HASH_HMAC was disabled. |
| 7.2.0 | Return HashContext instead of resource. |
See also
hash_algos(), hash_update(), hash_update_file(), hash_update_stream(), hash_final()
All PHP 8.5 built-in functions
Reference card built from the PHP manual page hash_init() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.