8

我们正在努力避免保存重复的文件。但是,我们的md5结果总是与BlobInfo不同。如何计算com.google.appengine.api.blobstore.BlobInfo的md5Hash

我们如何计算它:

MessageDigest messageDigest = java.security.MessageDigest.getInstance("MD5"); 
    digest = messageDigest.digest(bytes); 
    String digestString = DigestUtils.md5Hex(digest); 

不匹配:用(new BlobInfoFactory().loadBlobInfo(blobKey)).getMd5Hash();

例不匹配:

google vs my own calculation: 
8cdeb6db94bc4fd156e2975fd8ebbcf2 vs 9003b37afbf3637de96c35774069453f 
65a25dafcba58d16d58a9c7585cc3932 vs 52383159f7d27417d50121aaee2728b5 
5cccc2d690fdc0c254234d5526876b34 vs 8196da9b6733daa60e08d927693df483 

这是生产服务器上。 (我们没有测试开发环境)

+0

你在devappserver或prod中试过这个吗? –

+0

你也可以发布你所得到的和你的期望。另外,你正在上传什么样的文件? –

+0

这两个问题都回答了。这些文件通常是pdf和图片(jpeg)。 –

回答

7

Sebastian Kreft在上面的讨论中是正确的。

我复制的代码是错误的。它应该仅仅是:

String digestString = DigestUtils.md5Hex(bytes); 

塞巴斯蒂安Kreft使用的伎俩,以验证空文件的MD5应该始终是d41d8cd98f00b204e9800998ecf8427e!