我一直在寻找一种简单轻量级的JavaScript哈希算法。我确实在Stack Overflow上发现了这个基于数字的答案here。
不幸的是,我无法使用它,因为它是基于数字的,我需要在我的代码中的其他位置使用此哈希作为唯一索引。通常这个函数返回负数,这将是一个很大的禁忌(从上面链接的片段中尝试'hello world!'.hashCode()
看看我的意思)。
我很想在JS那里使用md5散列库但是它们只是为了我的目的而笨重而加密库(例如this)是过度的。
值得注意的是,此哈希中的信息无论如何都不敏感,如果它被解密则不一定重要。这个函数的目的是简单地生成固定长度的输出数据,作为我传入的原始数据的缩短引用。
非常感谢任何帮助,提示和评论:)
答案 0 :(得分:0)
Kooilnc提出的使用绝对值的解决方案应该为你做tric。但是,如果您想使用散列函数来生成引用,我假设您获得的引用应该是唯一的,以匹配它生成的确切元素。如果是这种情况,请注意碰撞。散列函数可以创建相似的散列,即使原始消息不同,我们称之为冲突。如果我没记错的话,SHA-1也可用于java脚本,并不是那么大。祝你好运
答案 1 :(得分:0)
我无法使用它,因为它是基于数字的,我需要在代码的其他地方使用此哈希作为唯一索引。
散列函数通常以数字为基础,很少完美(生成唯一键)。我认为你需要不同的东西:
function GuidGen()
{
this.items = {};
this.size = 0;
}
GuidGen.prototype.get = function(str)
{
if (!(str in this.items))
{
this.items[str] = this.size++;
}
return this.items[str];
}
// usage:
id = new GuidGen();
id.get("hello world"); // 0
id.get("spam"); // 1
id.get("eggs"); // 2
id.get("hello world"); // 0