DuplicateDetector
in package
implements
DuplicateDetectorInterface
SHA-256 によるメディアの内容ハッシュ計算と、既存メディアとの照合を行う既定実装
MD5/SHA-1 は衝突攻撃が現実的で新規実装では避けるのが業界標準のため、衝突耐性のある SHA-256 に揃える。アルゴリズム識別子はカラムに持たせず単一固定とし、将来の知覚ハッシュ 導入時は別カラム(media_perceptual_hash)で対応する(本クラスの責務には含めない)。
Table of Contents
Interfaces
- DuplicateDetectorInterface
- メディアの内容(バイト列)による重複判定契約
Methods
- findDuplicates() : array<string|int, int>
- 指定したハッシュに一致する既存メディアを、指定ユーザーの選択可能スコープ内で探す
- hash() : string
- ファイルの内容から同一性判定用のハッシュ値を計算する
- hashContent() : string
- 既に読み込み済みの内容(バイト列)から同一性判定用のハッシュ値を計算する
Methods
findDuplicates()
指定したハッシュに一致する既存メディアを、指定ユーザーの選択可能スコープ内で探す
public
findDuplicates(string $hash, int $blogId, int $userId) : array<string|int, int>
スコープは「そのユーザーがメディア選択UIで選択できるメディア」と一致させる (Helper::filterAccessibleMedia())。
Parameters
- $hash : string
- $blogId : int
- $userId : int
Return values
array<string|int, int> —一致した media_id 一覧(media_id 昇順)。一致なしは空配列
hash()
ファイルの内容から同一性判定用のハッシュ値を計算する
public
hash(string $filePath) : string
Parameters
- $filePath : string
-
実在するローカルファイルパス
Return values
stringhashContent()
既に読み込み済みの内容(バイト列)から同一性判定用のハッシュ値を計算する
public
hashContent(string $content) : string
クラウドストレージ等、ローカルファイルパスを介さず内容を取得した場合に使う (HashBackfiller など)。hash() と同一のアルゴリズムを使うことを保証する。
Parameters
- $content : string