有关Java中MD5校验和计算的说明

时间:2012-02-14 03:34:22

标签: java checksum

我使用了 this stackoverflow discussion中的代码来计算java中文件的校验和。

我对这项工作有点困惑我在我的问题中应用这个如下:

我有一个包含一些数据的文件。我使用

计算了文件中文本的大小
  System.out.println(file1content.toString().getBytes().length);  the o/p is 4096 bytes

当我尝试执行校验和代码时,我意识到正在读取的字节数是4096 + 12字节,这12个字节是否等于文件名?

我有另一个文件2与file1具有相同的内容(我知道这是肯定的,因为我将文本提取到String并将其与String.equals进行比较)但生成的校验和是不同的。我想知道为什么会这样?

我在这里错过了什么吗?

编辑1:

我正在使用以下循环从文件中读取数据:

 InputStream fis =  new FileInputStream(filename);
 byte[] buffer = new byte[1024];
  do {
       numRead = fis.read(buffer);
       System.out.println(" "+ numRead);
       if (numRead > 0) {
           complete.update(buffer, 0, numRead);
       }
   } while (numRead != -1);

   fis.close();

numread的输出是:

 1024
 1024
 1024
 1024
 12
 -1

此致 Bhavya

1 个答案:

答案 0 :(得分:1)

嗯,我发现了这个bug是什么,我不确定我是否介绍了这个bug或者它是否已经存在。

我意识到从文件中读取的数据不正确,文件的某些部分被多次读取,因此我修改了代码,以便通过指定开始和结束位置从文件中获取数据。

如果有人遇到此问题,请告诉我,我可以为此发布解决方案。

此致