我正在尝试将文件中的内容发送到Amazon数据库。我生成的MD5哈希不适合亚马逊生成的哈希。我做错了什么?
try {
FileInputStream fis = new FileInputStream("upload.txt");
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] buffer=new byte[8192];
int read=0;
while( (read = fis.read(buffer)) > 0)
md.update(buffer, 0, read);
byte[] md5 = md.digest();
BigInteger bi=new BigInteger(1, md5);
String output = bi.toString(16);
System.out.println(output);
SubmitFeed.submit(fis, output);
} catch(Exception e) {
// removed: not relevant to question
}
哈希亚马逊报道回来似乎有不同的模式。
我的:... 5856911dca2be1 ...亚马逊:... AmY7PhCfg ==
答案 0 :(得分:4)
看起来亚马逊哈希正在使用base64,而你正在使用hex。如果你使用base64库(such as this one),你应该没问题。 (我无法用你帖子中的值来验证,因为它们不完整。如果它不起作用,我会很惊讶。)
(我还建议不使用BigInteger
作为将二进制转换为十六进制的方法。它碰巧能够做到这一点,模数为前导零,但它不是它的目的。)