我在网上发现了这段代码,无法记住确切的来源,但相同的代码位于不同的网站上。
private function pageRankUrl($q) {
$host='toolbarqueries.google.com';
$seed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer.";
$result = 0x01020345;
$len = strlen($q);
for ($i=0; $i<$len; $i++) {
$result ^= ord($seed{$i%strlen($seed)}) ^ ord($q{$i});
$result = (($result >> 23) & 0x1ff) | $result << 9;
}
$ch=sprintf('8%x', $result);
$url='http://%s/tbr?client=navclient-auto&ch=%s&features=Rank&q=info:%s';
$url=sprintf($url,$host,$ch,$q);
return $url;
}
代码工作正常,但我只想帮助理解它。我需要了解$ seed是什么,以及for循环中发生了什么。
答案 0 :(得分:0)
在我看来,$ seed和for循环减少了查询字符串,即计算更短的版本。这可以用于哈希键或其他东西。当它计算密码哈希链时,它看起来像彩虹表中的缩减函数。