Java Content-MD5标头不匹配
我正在尝试将内容从文件发送到AmazonDB。我生成的MD5哈希与Amazon生成的不匹配。我做错了什么Java Content-MD5标头不匹配,java,amazon-web-services,md5,amazon,Java,Amazon Web Services,Md5,Amazon,我正在尝试将内容从文件发送到AmazonDB。我生成的MD5哈希与Amazon生成的不匹配。我做错了什么 try { FileInputStream fis = new FileInputStream("upload.txt"); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] buffer=new byte[8192]; i
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
amazon:…AmY7PhCfg==看起来amazon哈希使用的是base64,而您使用的是十六进制。如果使用base64库(),您应该不会有问题。(我无法用你文章中的值来验证这一点,因为它们不完整。但如果它不起作用,我会感到惊讶。)
(我还建议不要使用
BigInteger
作为将二进制转换为十六进制的方法。它恰好能够做到这一点,对前导零进行模化,但这不是它的目的。)看起来Amazon哈希使用的是base64,而您使用的是十六进制。如果使用base64库(),您应该不会有问题。(我无法用你文章中的值来验证这一点,因为它们不完整。但如果它不起作用,我会感到惊讶。)
(我还建议不要使用
BigInteger
作为将二进制转换为十六进制的方法。它恰好能够做到这一点,对前导零进行模化,但这不是它的目的。)thx,我认为我现在更进一步了。我通过了错误,遇到了另一个错误。“服务错误。响应状态:400。收到的消息:错误请求”这一次:(我不确定这是否与wron md5 sum.thx有关,我想我现在更进一步了。我传递了错误并遇到了另一个错误。“服务错误。响应状态:400。收到的消息:错误请求”这一次:(我不确定这是否与wron md5 sum有关。