【发布时间】:2015-02-15 14:21:09
【问题描述】:
我已经写了哈希计算函数:
var hash = function (string) {
var h = 7;
var i = 0;
var letters = "acdegilmnoprstuw";
while (i < string.length) {
h = (h * 37 + letters.indexOf( string[i++] ));
}
return h;
};
其中string = "agdpeew" 和结果是664804774844。但现在我不知道如何破译哈希。所以,如果我的输入是664804774844,答案将是agdpeew。
我可以使用什么算法?
也许我可以从664804774844 / 37 开始,但我怎样才能获得字母索引?
【问题讨论】:
-
使用“模”运算符,通常表示为
%,得到余数模 37。这应该给你一个 0..36 范围内的数字(实际上,小于那个),你然后可以使用它来索引数组letters。 -
一般,不可能将哈希码转换回创建它的值,因为可能的字符串比哈希码多。 通常,当有人试图反转哈希码时,他会尝试使用生成的哈希作为唯一键,这是一个非常糟糕的主意。您尝试反转此哈希码的目的是什么?
-
@JimMischel 作业
-
@JonathanLeffler 非常感谢,它的工作!
标签: algorithm encryption