<?php
// i wish the php builtin HashContext class had this stuff:
class OOHashContext{
private $hc;
public const HASH_HMAC=1;
public function __construct(string $algo, int $options = 0, string $key = NULL){
if(!($this->hc = hash_init($algo, $options, $key))){
throw new \RuntimeException();
}
}
public function update(string $data):self{
if(!hash_update($this->hc, $data)){
throw new \RuntimeException();
}
return $this;
}
public function update_file(string $file, $scontext = null):self{
if(!hash_update_file($this->hc, $file, $scontext)){
throw new \RuntimeException();
}
return $this;
}
public function update_stream($handle, int $length = -1):self{
if(!hash_update_stream($this->hc, $handle, $length)){
throw new \RuntimeException();
}
return $this;
}
public function final(bool $raw_output = false):string{
$ret = hash_final($this->hc, $raw_output);
if(!is_string($ret)){
throw new \RuntimeException();
}
return $ret;
}
}
$o=new OOHashContext("SHA1");
$str1="foo";
$str2="bar";
$result = (new OOHashContext("SHA1"))->update($str1)->update($str2)->final();
echo $result;
Deprecated: hash_init(): Passing null to parameter #3 ($key) of type string is deprecated in /in/lXd3u on line 7
Deprecated: hash_init(): Passing null to parameter #3 ($key) of type string is deprecated in /in/lXd3u on line 7
8843d7f92416211de9ebb963ff4ce28125932878
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Deprecated: hash_init(): Passing null to parameter #3 ($key) of type string is deprecated in /in/lXd3u on line 7
Deprecated: hash_init(): Passing null to parameter #3 ($key) of type string is deprecated in /in/lXd3u on line 7
8843d7f92416211de9ebb963ff4ce28125932878
Parse error: syntax error, unexpected T_CONST, expecting T_VARIABLE in /in/lXd3u on line 5
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_CONST, expecting T_VARIABLE in /in/lXd3u on line 5
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/lXd3u on line 4
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/lXd3u on line 4
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/lXd3u on line 4
Process exited with code 255.