如果我在java和javascript中生成md5
文件 - 这两个值是否相同?
我必须在javascript中生成md5
并将其发送到服务器并且服务器与之匹配。我收到哈希不匹配错误。
实际上,我需要' base64编码的128位MD5摘要'使用javascript发送到S3。
由于
答案 0 :(得分:4)
md5
是散列算法,它与语言无关。只要算法的输入相同,它就会生成相同的散列
答案 1 :(得分:0)
MD5只是一种散列算法,因此可以用任何语言实现。结果将是相同的,只要您在执行中没有犯任何错误。
在使用不同语言实现的某些方面,可能无意中在实现中引入错误,可能是:范围/截断/提升整数值,运算符优先级等。
答案 2 :(得分:0)
NO。 MD5与语言无关。
但正如我所知,你是从一台计算机创建哈希码并使用另一台计算机阅读它,这可能会导致charset混乱。确保您使用的是相同的charset UTF-8 。 而且我发现这很有用,尝试使用它而不将哈希存储在数据库中。
public static String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes("UTF-8"));
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString();
} catch (Exception e) {
}
return null;
}