首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript上获取两个输入(字符串)的散列键的方法?

在javascript上获取两个输入(字符串)的散列键的方法?
EN

Stack Overflow用户
提问于 2013-12-05 13:09:55
回答 3查看 1.9K关注 0票数 2

我需要生成一个包含两个输入(字符串) ex: inputA != inputB为true的散列键

( hash_method(inputA,inputB);

( hash_method(inputB,inputA);

和条件

key1 === key2是真的。

我需要js,但是如果有人可以帮助我使用java或ruby,我可以推演它。或者您有一些插件或js的库将是很好的。我不需要钥匙很安全,但我只需要

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-05 13:43:28

假设Java中用于字符串的哈希代码生成足够好,那么在Javascript中实现它非常简单。如果希望在多个字符串上构建哈希代码(其中字符串的顺序无关),则可以将每个字符串的哈希代码与xor组合。

可以使用一个或多个参数调用以下Javascript函数:

代码语言:javascript
复制
function hash() {

    var h=0, i=0;

    if(hash.arguments.length == 1) {
        for(i=0; i<hash.arguments[0].length; i++) {
            h = (h * 31 + hash.arguments[0].charCodeAt(i)) & 0xffffffff;
        }
    }
    else {
        for(i in hash.arguments) {
            h ^= hash(hash.arguments[i]);
        }
    }

    return h;
}

请注意,此函数的结果范围是无符号的([0,2^32>),而不是将[-2^31,2^31>)签名为Java的String#hashCode()

票数 3
EN

Stack Overflow用户

发布于 2013-12-05 13:23:59

我只是把琴弦的杂音。这是在对象的字段上创建哈希的常见方法。XOR是可换的,所以您的条件应该是真的。

代码语言:javascript
复制
function hash_method(inputAHash, inputBHash) { return inputAHash ^ inputBHash };

链接:

这个答案给出了如何在字符串上计算一个好的哈希代码(从inputA和inputB计算散列)。

如何创建哈希代码基于对象的字段(这是一个Java教程,但在JS中同样适用)。

票数 3
EN

Stack Overflow用户

发布于 2013-12-05 16:15:27

我的最后解决办法是:

代码语言:javascript
复制
var hash = function (params)  {
        var h=0, i=0;
        if(typeof (params) === "string") {
            for(i=0; i<params.length; i++) {
                h = (h * 31 + params.charCodeAt(i)) & 0xffffffff;
            }
        }
        else if( params instanceof Array) {
            for(i in params) {
                h ^= hash(params[i]);
            }
        }
        return h;
};

var a1 = "pc-1"; var a2 = "router-2";
var params1 = [a1, a2];
hash(params1); //result 6720633
var params2 = [a2,a1];
hash(params2); //result 6720633
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20400906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档