这个功能的目的是什么?

时间:2014-01-02 11:50:00

标签: javascript string function encryption hash

我一直在寻找某个网站的加密密钥,我遇到了这个功能。我想知道这个功能是做什么的,甚至是什么意思?

this.GetUserDirectory = function () {
var PJWHashText = function (pTextToHash) {
    var ascii = "01234567890123456789012345678901" + " !\"#i%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
    var gg = 0;
    var hh = 0;
    var ch, val;
    for (var ii = 0; ii < pTextToHash.length; ii++) {
        ch = pTextToHash.charAt(ii);
        val = (((ch > '#') && (ch < '%')) ? 36 : ascii.lastIndexOf(ch));
        hh = (hh << 4) + val;
        gg = hh & 0xF0000000;
        if (gg != 0) {
            hh = hh ^ (gg >>> 24);
            hh = hh ^ gg;
        }
    }
    return hh;
}

1 个答案:

答案 0 :(得分:1)

这是一个精心设计的函数,它生成一个字符串的散列(在本例中是一个数字)(pTextToHash参数)。这样的哈希可以用在其他函数中(例如,在类似hashmap的数据结构中)。

内部运作涉及:

  • 将字符串中的每个chacarter翻译为数字
  • 一些 有趣的bithifting和逻辑处理允许这些数字 合并成一些复合数而不破坏 该综合数字中的先前数字。

此函数的一个重要属性是相同的输入始终返回相同的输出。