function HashURL($String)
 {
     $Check1 = StrToNum($String, 0x1505, 0x21);
     $Check2 = StrToNum($String, 0, 0x1003f);
     $Check1 >>= 2;
     $Check1 = $Check1 >> 4 & 0x3ffffc0 | $Check1 & 0x3f;
     $Check1 = $Check1 >> 4 & 0x3ffc00 | $Check1 & 0x3ff;
     $Check1 = $Check1 >> 4 & 0x3c000 | $Check1 & 0x3fff;
     $T1 = (($Check1 & 0x3c0) << 4 | $Check1 & 0x3c) << 2 | $Check2 & 0xf0f;
     $T2 = (($Check1 & 0xffffc000) << 4 | $Check1 & 0x3c00) << 0xa | $Check2 & 0xf0f0000;
     return $T1 | $T2;
 }
示例#2
0
function HashURL($String) {
    $Check1 = StrToNum($String, 0x1505, 0x21);
    $Check2 = StrToNum($String, 0, 0x1003F);
 
    $Check1 >>= 2;      
    $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
    $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
    $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF); 
       
    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
       
    return ($T1 | $T2);
}
示例#3
0
             }
             $CheckByte >>= 1;
         }
     }
     return '7' . $CheckByte . $HashStr;
 }
 function HashURL($String)
 {
     function StrToNum($Str, $Check, $Magic)
     {
         $Int32Unit = 4294967296;
         // 2^32
         $length = strlen($Str);
         for ($i = 0; $i < $length; $i++) {
             $Check *= $Magic;
             //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
             //  the result of converting to integer is undefined
             //  refer to http://www.php.net/manual/en/language.types.integer.php
             if ($Check >= $Int32Unit) {
                 $Check = $Check - $Int32Unit * (int) ($Check / $Int32Unit);
                 //if the check less than -2^31
                 $Check = $Check < -2147483648 ? $Check + $Int32Unit : $Check;
             }
             $Check += ord($Str[$i]);
         }
         return $Check;
     }
     $Check1 = StrToNum($String, 0x1505, 0x21);
     $Check2 = StrToNum($String, 0, 0x1003f);
     $Check1 >>= 2;
     $Check1 = $Check1 >> 4 & 0x3ffffc0 | $Check1 & 0x3f;