0

如何PHASH从 in 中的字符串生成值PHP

我继承了一个ASP使用PHASHwith strings不是图像路径)的代码库。来自研究,PHASH用于图像。

我目前正在使用 重写这部分代码库PHP,并且有几个库看起来很有用:

但是,它们都需要图像的路径。我已经尝试过jenssegers/imagehash,当我传递一个随机字符串时会引发异常。

以下代码说明PHASH当前在遗留代码库中的使用方式:

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

更新

PHASHPHash是代码库中的自定义函数,由于大小写混合( vs PHASH),我最初未能找到它。

幸运的是,我找到了以下SO 答案,它是用C#. 感谢@Lathejockey81 提供答案,我已将其转换为下面的PHP(作为答案)。

4

1 回答 1

0

从SO 答案转换的自定义PHASH函数:

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);
}
于 2018-06-11T11:46:32.367 回答