2011-12-05 1 views
1

現在、私は2つのクライアントが接続できるサーバーを持っています。これらの2つのクライアントの両方は、起動時にすぐにプログラムによって読み取られる、HDD上のテキストファイルを有する。このテキストファイルには、両方のクライアント(サーバーによって検証される必要があります)にEXACTの同じデータ(プレーンテキストのみ)が含まれているか、サーバーがクライアントにサービスしていない可能性があります。Java validateファイル

これを正しく行う方法がわかりました。私は何をすべきか?ハッシュコードを計算するか、MD5/SHA1/SHA2を次のように使用しますか?最初にファイルを読み込み、作成したオブジェクトのハッシュコードを計算するか、MD5をファイル上で直接計算する必要がありますか?

おかげ

+2

おそらく[CRC32チェック](http://stackoverflow.com/questions/7776069/confirming-file-content-against-hash)?ファイルの内容はどれくらいですか?小さい場合はバイト単位で比較してみるとよいでしょう。 BTW - これはエンドユーザにどのようなアプリケーション機能を提供しますか? –

答えて

0

本当に、確かにとするには、両方のテキストファイルの内容をサーバーに転送し、文字列として比較する必要があります。

実際には、ハッシュコードを計算し、その値をサーバー上で比較することができます。 ApacheのコモンズでFileUtilクラスを見てください。これは、ファイルのチェックサムを計算するために使用できるchecksumCRC32(File file)メソッドを定義します。チェックサムが両方のファイルで等しい場合、内容は等しいとみなすことができます。それにもかかわらず、それらが異なる可能性は1/2^32です。

0

あなたは簡単にはApache CommonsのからDigestUtilsを使用してファイルのハッシュを計算することができます。それは、MD5またはSHA1であるハッシュを計算するための素晴らしい方法を持っています。次に、各クライアントのファイルのハッシュを比較するだけです。

また、正確なハッシュが、ファイルが同一であることを100%保証するものではありません。ハッシュが等しいとファイルが同一でないことは非常にまれな状況です。しかし、あなたのアプリでこの決定が重要かどうかに応じて、ハッシュが等しいかどうかをバイトごとに比較して、データが正確であることを確認する必要があります。