md5值语言是否依赖?

时间:2017-03-30 06:41:36

标签: javascript java

如果我在java和javascript中生成md5文件 - 这两个值是否相同? 我必须在javascript中生成md5并将其发送到服务器并且服务器与之匹配。我收到哈希不匹配错误。

实际上,我需要' base64编码的128位MD5摘要'使用javascript发送到S3。

由于

3 个答案:

答案 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;
    }