如何从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(作为答案)。
答案 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);
}