如何用Java获取文件的md5sum?

时间:2010-11-15 17:26:37

标签: java spring md5sum

我有一个文件,每次更改时我都需要在我的应用程序中重新加载。

我正在检查它的lastModified,我也想在处理之前检查它的md5sum。

我正在使用Spring框架,以防有一些有用的东西。

检查这个的最佳方法是什么?我应该检查的任何示例/库?

感谢。

5 个答案:

答案 0 :(得分:2)

link中的说明和代码段可能对您有所帮助

仅仅是为了记录,大多数使用bigInteger的片段都存在一个常见问题,bigInteger类会在字符串的开头删除额外的零,因此您可能希望添加类似的检查

    String res =new BigInteger(1,m.digest()).toString(16);
    if (res.length() == 31)
          res = "0" + res;

答案 1 :(得分:1)

    InputStream in = new FileInputStream(filename);

    MessageDigest md5 = MessageDigest.getInstance("MD5");
    byte[] buffer = new byte[1024];

    while (true)
    {
        int c = in.read(buffer);

        if (c > 0)
            md5.update(buffer, 0, c);
        else if (c < 0)
            break;
    }

    in.close();

    byte[] result = md5.digest();

答案 2 :(得分:0)

您必须阅读整个文件并将其提供给MessageDigest的实例。

答案 3 :(得分:0)

您可以使用Java内置函数执行此操作:

MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(...your data here...);
byte[] hash = digest.digest();

或尝试其他实现here,当然更快(根据它的名字:)

编辑:

他们似乎提供了文件md5sum,正是你想要的!

  

您需要额外的便利方法   用于散列文件......

String hash = MD5.asHex(MD5.getHash(new File(filename)));

答案 4 :(得分:0)

使用MessageDigest课程,你可以找到一个很好的例子here