Javascript md5值是否依赖于语言?

Javascript md5值是否依赖于语言?,javascript,java,Javascript,Java,如果我用java和javascript生成文件的md5,这两个值会相同吗? 我必须用javascript生成md5,并将其发送到服务器,服务器将匹配它。我得到一个哈希不匹配错误 实际上,我需要使用javascript将“base64编码的128位MD5摘要”发送到S3 感谢md5是散列算法,它与语言无关。只要算法的输入相同,它将生成相同的哈希值。MD5只是一个哈希算法,因此可以用任何语言实现。只要您在实现过程中没有犯任何错误,结果将是一样的 在用不同语言实现时,可能会无意中在实现中引入错误,需要

如果我用java和javascript生成文件的
md5
,这两个值会相同吗? 我必须用javascript生成
md5
,并将其发送到服务器,服务器将匹配它。我得到一个哈希不匹配错误

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


感谢

md5
是散列算法,它与语言无关。只要算法的输入相同,它将生成相同的哈希值。MD5只是一个哈希算法,因此可以用任何语言实现。只要您在实现过程中没有犯任何错误,结果将是一样的

在用不同语言实现时,可能会无意中在实现中引入错误,需要注意的一些方面可能是:整数值的范围/截断/提升、运算符优先级等

不,MD5是独立于语言的

但据我所知,您正在从一台计算机创建哈希代码,并使用另一台计算机读取,这可能会导致字符集混乱。确保使用的字符集与推荐的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;
    }
公共静态字符串MD5(字符串MD5){
试一试{
java.security.MessageDigest md=java.security.MessageDigest.getInstance(“MD5”);
字节[]数组=md.digest(md5.getBytes(“UTF-8”);
StringBuffer sb=新的StringBuffer();
对于(int i=0;i
它们绝对应该是相同的。在您收到不匹配错误的地方共享您的代码?一种可能是您发送的代码不正确。它们应该是相同的。如果您展示生成它的代码和验证它的代码,我们可能有助于发现问题您如何比较散列?也许这是常见的“如何比较字符串”问题?*刮头发*高代表性用户将评论作为答案?@KarelG嗯,这就是答案。其实并没有更多,是吗?@Jigar:“只要算法的输入相同,它就应该生成相同的散列”——我甚至会说“它必须生成相同的散列”。否则它将被破坏和无用。@Fildor如果你问我,用户P.J.Meisch通过对OP的问题的回答更正确地处理了这个问题。@KarelG我真的不明白你的逻辑。答案应该是答案,而不是评论。