2
iはphashについて読むように、四種類があります。これはどのタイプのphashアルゴリズムですか?
- 離散コサイン変換(DCT)は、
- 基づくラジアル分散と
- ブロックの平均値をベースとベース
- Aマー-Hildrethオペレータ値ベースの画像ハッシュ関数。
以下のコードでは、DCTセクションはありません。単に平均コードとハッシュ値を生成するだけです。私はそれがブロック平均値に基づくハッシュ関数かもしれないと確信しています。そのブロック平均値では、algoには秘密鍵はありません。
<?php
$filename = 'image.jpg';
list($width, $height) = getimagesize($filename);
$img = imagecreatefromjpeg($filename);
$new_img = imagecreatetruecolor(8, 8);
imagecopyresampled($new_img, $img, 0, 0, 0, 0, 8, 8, $width, $height);
imagefilter($new_img, IMG_FILTER_GRAYSCALE);
$colors = array();
$sum = 0;
for ($i = 0; $i < 8; $i++) {
for ($j = 0; $j < 8; $j++) {
$color = imagecolorat($new_img, $i, $j) & 0xff;
$sum += $color;
$colors[] = $color;
}
}
$avg = $sum/64;
$hash = '';
$curr = '';
$count = 0;
foreach ($colors as $color) {
if ($color > $avg) {
$curr .= '1';
} else {
$curr .= '0';
}
$count++;
if (!($count % 4)) {
$hash .= dechex(bindec($curr));
$curr = '';
}
}
print $hash . "\n";
?>
このアルゴの種類は何ですか?
これはブロック平均値ベースの画像ハッシュであるというあなたの感想に同意します。あなたは秘密鍵が必要だと思いますか? – Martin
ブロック平均ハッシュには4つの方法があります(http://phash.org/docs/pubs/thesis_zauner.pdf)。私はこの疑いがありました。しかし、私は正しいBMB方法を理解することができませんでした。 – user1153410