Генерируйте хеш, используя PHASH с PHP - PullRequest
0 голосов
/ 11 июня 2018

Как я могу сгенерировать значение PHASH из строки в PHP?

Я унаследовал кодовую базу ASP, которая использует PHASH с strings ( не путями)к изображениям ).Из исследований PHASH используется для изображений.

В настоящее время я переписываю эту часть кодовой базы, используя PHP, и есть пара библиотек, которые кажутся полезными:

Однако , им обоим требуется путь к изображению.Я попытался jenssegers/imagehash, и это выдает исключение, когда я передаю случайную строку.

Код ниже о том, как PHASH в настоящее время используется в устаревшей кодовой базе:

sLoginPassword = RequestValue("Password")
SQLVal(PHASH(sLoginPassword))

Обновление

PHASH - это пользовательская функция в кодовой базе, я не смогчтобы найти его изначально из-за смешанного корпуса (PHash против PHASH).

К счастью, я нашел следующий SO ответ , записанный в C#.Спасибо @ Lathejockey81 за предоставление ответа, я преобразовал его в PHP ниже (как ответ).

1 Ответ

0 голосов
/ 11 июня 2018

Пользовательская PHASH функция, преобразованная из SO ответ :

function PHASH($string)
{
    $value = trim(strtoupper($string));

    $dAccumulator = 0;
    $asciiBytes = [];

    for($i = 0; $i < strlen($value); $i++) {
        $asciiBytes[] = ord($value[$i]);
    }

    for($i = 0; $i < count($asciiBytes); $i++) {
        if(($i & 1) == 1) {
            $dAccumulator = cos($dAccumulator + (float) $asciiBytes[$i]);
        } else {
            $dAccumulator = sin($dAccumulator + (float) $asciiBytes[$i]);
        }
    }
    $dAccumulator = $dAccumulator * pow(10, 9);

    return round($dAccumulator);
}
...