for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace carono\checksum;
/**
* Class Checksum
*
* @package app\helpers
*/
class Checksum
{
* @param $array
* @param null $salt
* @return string
public static function calculate($array, $salt = null)
if ($key = static::formKey($array)) {
return hash("sha256", $key . $salt);
} else {
return null;
}
* @param $hash
* @return bool
public static function validate($array, $hash, $salt = null)
$realHash = static::calculate($array, $salt);
return $realHash == $hash;
* @return array
public static function formKeyPartials($array)
$result = [];
foreach ((array)$array as $model => $values) {
if (is_array($values)) {
foreach ($values as $key => $value) {
if (is_array($value)) {
foreach ($value as $subKey => $subValue) {
$result[] = join('=', [$model, is_numeric($key) ? $value : $key]);
break;
$result = array_unique($result);
sort($result);
return $result;
public static function formKey($array)
$result = join('|', static::formKeyPartials($array));