2012-04-21 14 views
1

サーバからダウンロードしたファイルのmd5sumと一致させようとしています。 合計が一致する場合にのみ処理が続行されます。MD5sumが正しく計算されていません

try { 
     MessageDigest digest = MessageDigest.getInstance("MD5"); 
     File f = new File(fileName); 
     InputStream is = new FileInputStream(f);    
     byte[] buffer = new byte[8192]; 
     int read = 0; 
     while((read = is.read(buffer)) > 0) { 
      digest.update(buffer, 0, read); 
     } 
     is.close(); 
     byte[] md5sum = digest.digest(); 
     BigInteger bigInt = new BigInteger(1, md5sum); 
     output = bigInt.toString(16); 
     System.out.println("MD5: " + output); 
    } catch(IOException e) { 
     throw new RuntimeException("Unable to process file for MD5", e); 
    } catch (NoSuchAlgorithmException e) { 
    e.printStackTrace(); 
    } 

上記のコードでは、毎回一部のファイルでmd5sumが正しく提供されません。

私がコンソールに行き、md5sum <filename>のmd5sumがサーバーのものと同じであることを確認します。しかし、コードから同じものが計算されると、別の結果が得られます。

ダウンロードしたファイルのvimdiffは差分を提供していません..ファイルはダウンロード後に適切です。

私は上記のコードで問題を見ることができません。

バッファサイズを変更しようとしています。しかし、運が、私はそれが原因で、彼らは重要ではないとしてなど

byte[] buffer = new byte[8192]; 

よろしく
Dheeraj女子

+0

誰かがコードを見て、何か間違いがないか教えてください。 –

+1

実際の結果と予想される結果を掲載するのはどうですか? – EJP

+0

私が持っているもの8611c0b0832bce5a19ceee626a403a7期待される08611c0b0832bce5a19ceee626a403a7 –

答えて

関連する問題