使用PHP使用PHASH生成哈希

时间:2018-06-11 10:53:42

标签: php asp-classic phash

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

我继承了ASP代码库,该代码库使用PHASH strings不是图片路径)。通过研究,PHASH用于图像。

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

然而,它们都需要图像的路径。我试过了jenssegers/imagehash,当我传递一个随机字符串时会抛出异常。

下面代码PHASH目前在旧代码库中的使用方式:

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

更新

PHASH是代码库中的自定义函数,由于混合大小写(PHash vs PHASH),我无法找到它。

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

1 个答案:

答案 0 :(得分:0)

SO answer转换的自定义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);
}