2013-01-07 50 views
0

我试图将文件内容发送到亚马逊数据库。我生成的MD5哈希不适合亚马逊生成的。我究竟做错了什么?Java内容-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 ==

回答

4

它看起来像亚马逊散列使用Base64,而你使用十六进制。如果你使用base64库(such as this one),你应该没问题。 (我无法验证与您的文章的价值,因为他们是不完整的。我会很惊讶,如果它不工作,虽然。)

(我也想用BigInteger作为建议一种将二进制转换为十六进制的方式,它正好能够做到这一点,模数前导零,但这不是它的目的。)

+0

thx,我想我现在进一步了。我通过错误并跑到另一个。 “服务错误。响应状态:400.收到的消息:错误的请求”这一次:(我不知道这是否与一个wron md5总和。 – Chromos