2011-07-27 9 views
0

チェックサムに基づいていくつかのファイルを保存していましたが、2つのチェックサムが同じである可能性があるという欠点を発見しました。JAVAを使用した単一インスタンスファイルの保存

私はいつもホイールを再発明する代わりにAPIを探してみるが、何も見つかりません。

私はJSR 268とJackRabbitをコンテンツストレージの標準として認識していますが、私のアプリはそのようなものを使用するには軽い年です。

Javaを使用した単一のInstance File Storageのアプローチがありますか、またはチェックサムの新しいアルゴリズムを探し続けるだけでよいですか?

EDIT:

numcheckが動作していない:2つのファイルは、単に別のファイルシステムの場所で、まったく同じです。しかし、クライアントから送信されたときに、サーバ側では以前のパスを知ることができないので、同じファイルが2回同じチェックサムになります。

いずれかを取得したい場合は、その確認方法を教えてください。

は、標準的なアプローチ、API、または私は

+0

MD5またはSHA1を使用してください。それからそれらは複製されません。 – bmargulies

+0

SHA-1は、[git](http://git-scm.com/)がファイル(「ブロブ」)を識別するために使用します。同じSHA-1署名を持つ2つのファイルを区別することはできません。同じファイルであるとみなされ、その違いは失われます。私が知る限り、誰もファイルを紛失したと主張している人はいません。 –

+0

@Ed Staub大規模なポルノ画像コレクションのファイル名をSHA-1ハッシュ(重複を削除するため)に変更するスクリプトを書いて、いくつかの衝突を発見しました。それは起こりえない可能性があります。 – Christopher

答えて

3

にハッシュアルゴリズムがどのように強いどんなにを違いを見つける助けることができるアルゴリズムがあったかを知りたいと思った、collisionのチャンスが常にあります。ハッシュアルゴリズムは、無限数の入力から有限数のハッシュを生成します。

+0

興味深い、今質問はどのように衝突に対処するのですか? – javaNoober

0

2つのファイルが同一でないことを保証する唯一の方法は、ビットごとにそれらを比較することです。それらをハッシュすることはより簡単で速くなりますが、衝突のリスクも伴います。

関連する問題