Javascript 这个功能的目的是什么?

Javascript 这个功能的目的是什么?,javascript,string,function,encryption,hash,Javascript,String,Function,Encryption,Hash,我一直在寻找一个特定网站的加密密钥,我遇到了这个功能。我想知道这个函数是做什么的,甚至是什么意思 this.GetUserDirectory = function () { var PJWHashText = function (pTextToHash) { var ascii = "01234567890123456789012345678901" + " !\"#i%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV

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

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;
}
this.GetUserDirectory=函数(){
var PJWHashText=函数(pTextToHash){
var ascii=“01234567890123456789012345678901”+“!\”#i%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ+“[\\]^ ` ABCDEFGHIJKLMNOPQRSTUVWXYZ{124;}”;
var-gg=0;
var-hh=0;
var-ch,val;
对于(var ii=0;ii'#')&&(ch<'%')?36:ascii.lastIndexOf(ch));
hh=(hh>>24);
hh=hh^gg;
}
}
返回hh;
}

这是一个复杂的函数,可以生成字符串的散列(在本例中是一个数字)(
pTextToHash
参数)。这种散列可以在其他函数中使用(例如在类似hashmap的数据结构中)

内部工作包括:

  • 将字符串中的每个字符转换为数字
  • 一些 有趣的位移位和逻辑处理允许这些数字 合并成一个复合数而不破坏 该复合编号中的先前编号

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

这些生成的哈希可以被破解吗?如果可以,如何破解?以及您建议在2d游戏中从何处查找加密密钥。哈希不是您破解的东西。它是一种单向算法,如果没有,则无法根据输出找到输入字符串这就是你的意思。另外:我不知道你的另一个问题:-)好的,有一个网站我可以记录cookies,但为了使用它们,它们必须被解码和重新格式化。一个家伙也知道如何记录来自同一个网站的cookies,他告诉我如何注入cookies以获得访问权限(我刚才说的方式)他说我应该在JS文件中查找加密密钥来破解散列。我也相信他,因为他之前使用cookies通过teamviewer访问过我的帐户。Idk这个JS文件在哪里,因为我检查了网站上的每个页面,只找到了问题中的函数。哦,我确实认为从技术上讲,编写这样的程序是可能的生成(或查找)将生成给定输出编号的输入字符串,但这可能是一个难题(或至少是一个新问题;-)