0

PHASHで文字列から値を生成するにはどうすればよいPHPですか?

with (パスへのパスではありませんASP)を使用するコードベースを継承しました。研究から、画像に使用されます。PHASHstringsPHASH

私は現在、コードベースのこの部分を を使用して書き直していPHPます。便利なライブラリがいくつかあります。

ただし、どちらも画像へのパスが必要です。試してみましたjenssegers/imagehashが、ランダムな文字列を渡すと例外がスローされます。

PHASH以下のコードは、レガシー コードベース内で現在どのように使用されているかを示しています。

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

アップデート

PHASHはコードベース内のカスタム関数ですが、大文字と小文字が混在しているため ( PHashvs PHASH)、最初は見つけられませんでした。

幸いなことに、に書かれている次のSO回答C#を見つけました。答えを提供してくれた@Lathejockey81に感謝します。これを以下のPHPに変換しました(答えとして)。

4

1 に答える 1

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