使用带 PHP 的 PHASH 生成哈希
Generate hash using PHASH with PHP
如何从 PHP
中的字符串生成 PHASH
值?
我继承了一个 ASP
代码库,它利用 PHASH
和 strings
( 不是图像路径 )。根据研究,PHASH
用于图像。
我目前正在使用 PHP
重写这部分代码库,有几个库似乎很有用:
但是,它们都需要图像的路径。我试过 jenssegers/imagehash
,当我传递一个随机字符串时会抛出异常。
下面的代码说明了 PHASH
当前如何在遗留代码库中使用:
sLoginPassword = RequestValue("Password")
SQLVal(PHASH(sLoginPassword))
更新
PHASH
是代码库中的自定义函数,由于大小写混合(PHash
vs PHASH
),我最初找不到它。
幸好我找到了下面的SO answer,写在C#
中。感谢@Lathejockey81 提供答案,我已将其转换为下面的 PHP(作为答案)。
从 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);
}
如何从 PHP
中的字符串生成 PHASH
值?
我继承了一个 ASP
代码库,它利用 PHASH
和 strings
( 不是图像路径 )。根据研究,PHASH
用于图像。
我目前正在使用 PHP
重写这部分代码库,有几个库似乎很有用:
但是,它们都需要图像的路径。我试过 jenssegers/imagehash
,当我传递一个随机字符串时会抛出异常。
下面的代码说明了 PHASH
当前如何在遗留代码库中使用:
sLoginPassword = RequestValue("Password")
SQLVal(PHASH(sLoginPassword))
更新
PHASH
是代码库中的自定义函数,由于大小写混合(PHash
vs PHASH
),我最初找不到它。
幸好我找到了下面的SO answer,写在C#
中。感谢@Lathejockey81 提供答案,我已将其转换为下面的 PHP(作为答案)。
从 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);
}