2011-11-26 5 views
6

ファイルを使用してデータベースを作成したいとします。また、これらのファイルを簡単に検索するために、何らかのハッシュ技術を使用したいと考えています。しかし、私は正確に同じファイルを探したいだけでなく、ファイルの一部が同じである(つまり、ファイルが類似している)かどうかを確認する必要があります。言い換えれば、同様のファイルは類似したハッシュを持つ必要があります。同様の入力に似たハッシュを作成する方法は?

これは(アバランシェ効果は、データの各ビットが他のデータの他のすべてのビットに影響を与えることを意味する。)「なだれ効果」があってはならないので、ハッシュのこの種の実際の暗号ハッシュではないことを意味する

別ハッシュはセキュリティ目的ではなくファイルの比較に使用されるため、一方向である必要はありません。

だから、本質的には、私がいることを、それぞれ独自の入力のためのユニークなハッシュを作成することができ、アルゴリズムを探しています:

  • は、(ほぼ)無衝突

  • はのための同様の出力を作成します。類似の入力

  • 元のファイルよりも短い(そうしないと、元のファイルを単純に比較するほうが速くなります)。

    私はなど、一緒に第三及び4rthを追加し、その後、一緒に最初の2つの文字を追加するような何かを考えていた

「1 + 4」は「と同じであるので、これは衝突の膨大な量を持っています2 + 2 "など

私は実際にどのように起動するのか分かりません。誰かが私を教えてくれますか? :)

+1

これはおそらく非常に困難です。ジョブが一般的なバイトを持つファイルを見つけることであるならば、[ssdeep](http://ssdeep.sourceforge.net/)のようなものがあれば、それは素晴らしいです。http://en.wikipedia.org/wiki/Agrep –

+2

を見てください。 –

+0

圧縮アルゴリズムを作成し、その後に並べ替えを行うことを検討しています。決定的なことをするために、すべての圧縮入力に同じ頻度テーブルを使用します。 – sehe

答えて

1

私は現在、同じ効果を達成するためにssdeepを使用しています。私はそれとかなり良い結果を得ています。

また、sdhashがssdeepよりも優れていることも読んでいます。

関連する問題