View Single Post
Old 12-03-2004, 07:54 PM  
goBigtime
Confirmed User
 
Join Date: Nov 2002
Posts: 7,761
hmm and heres the code it was based off of....

PHP Code:

<?php 
/* 
        Written and contributed by 
        Alex Stapleton, 
        Andy Doctorow, 
        Tarakan, 
        Bill Zeller, 
        Vijay "Cyberax" Bhatter 
        traB 
    This code is released into the public domain 
*/ 
header("Content-Type: text/plain; charset=utf-8"); 
define('GOOGLE_MAGIC'0xE6359A60); 

//unsigned shift right 
function zeroFill($a$b

    
$z hexdec(80000000); 
        if (
$z $a
        { 
            
$a = ($a>>1); 
            
$a &= (~$z); 
            
$a |= 0x40000000
            
$a = ($a>>($b-1)); 
        } 
        else 
        { 
            
$a = ($a>>$b); 
        } 
        return 
$a



function 
mix($a,$b,$c) { 
  
$a -= $b$a -= $c$a ^= (zeroFill($c,13)); 
  
$b -= $c$b -= $a$b ^= ($a<<8); 
  
$c -= $a$c -= $b$c ^= (zeroFill($b,13)); 
  
$a -= $b$a -= $c$a ^= (zeroFill($c,12)); 
  
$b -= $c$b -= $a$b ^= ($a<<16); 
  
$c -= $a$c -= $b$c ^= (zeroFill($b,5)); 
  
$a -= $b$a -= $c$a ^= (zeroFill($c,3));   
  
$b -= $c$b -= $a$b ^= ($a<<10); 
  
$c -= $a$c -= $b$c ^= (zeroFill($b,15)); 
   
  return array(
$a,$b,$c); 


function 
GoogleCH($url$length=null$init=GOOGLE_MAGIC) { 
    if(
is_null($length)) { 
        
$length sizeof($url); 
    } 
    
$a $b 0x9E3779B9
    
$c $init
    
$k 0
    
$len $length
    while(
$len >= 12) { 
        
$a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24)); 
        
$b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24)); 
        
$c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24)); 
        
$mix mix($a,$b,$c); 
        
$a $mix[0]; $b $mix[1]; $c $mix[2]; 
        
$k += 12
        
$len -= 12
    } 

    
$c += $length
    switch(
$len)              /* all the case statements fall through */ 
    

        case 
11$c+=($url[$k+10]<<24); 
        case 
10$c+=($url[$k+9]<<16); 
        case 
$c+=($url[$k+8]<<8); 
          
/* the first byte of c is reserved for the length */ 
        
case $b+=($url[$k+7]<<24); 
        case 
$b+=($url[$k+6]<<16); 
        case 
$b+=($url[$k+5]<<8); 
        case 
$b+=($url[$k+4]); 
        case 
$a+=($url[$k+3]<<24); 
        case 
$a+=($url[$k+2]<<16); 
        case 
$a+=($url[$k+1]<<8); 
        case 
$a+=($url[$k+0]); 
         
/* case 0: nothing left to add */ 
    

    
$mix mix($a,$b,$c); 
    
/*-------------------------------------------- report the result */ 
    
return $mix[2]; 


//converts a string into an array of integers containing the numeric value of the char 
function strord($string) { 
    for(
$i=0;$i<strlen($string);$i++) { 
        
$result[$i] = ord($string{$i}); 
    } 
    return 
$result



// converts an array of 32 bit integers into an array with 8 bit values. Equivalent to (BYTE *)arr32 

function c32to8bit($arr32) { 
    for(
$i=0;$i<count($arr32);$i++) { 
        for (
$bitOrder=$i*4;$bitOrder<=$i*4+3;$bitOrder++) { 
            
$arr8[$bitOrder]=$arr32[$i]&255
            
$arr32[$i]=zeroFill($arr32[$i], 8); 
        }     
    } 
    return 
$arr8



// [url]http://www.example.com/[/url] - Checksum: 6540747202 
$url 'info:'.$_GET['url']; 
print(
"url:\t{$_GET['url']}\n"); 
$ch GoogleCH(strord($url)); 
printf("Checksum <2.0.114:\t6%u\n",$ch); 

$ch=sprintf("%u"$ch); 
// new since Toolbar 2.0.114 

$ch = ((($ch/7) << 2) | (((int)fmod($ch,13))&7)); 

$prbuf = array(); 
$prbuf[0] = $ch
for(
$i 1$i 20$i++) { 
      
$prbuf[$i] = $prbuf[$i-1]-9

$ch GoogleCH(c32to8bit($prbuf), 80); 
// 

printf("Checksum >=2.0.114:\t6%u\n",$ch); 
?>
goBigtime is offline   Share thread on Digg Share thread on Twitter Share thread on Reddit Share thread on Facebook Reply With Quote