示例#1
0
function mix($string)
{
    $mixed = preg_replace_callback("/\\{([^\\{]*)\\}/U", function ($match) {
        $variants = explode('|', $match[1]);
        return $variants[array_rand($variants)];
    }, $string, 1);
    if ($mixed === $string) {
        return $mixed;
    } else {
        return mix($mixed);
    }
}
示例#2
0
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) {
        case 11:
            $c += $url[$k + 10] << 24;
        case 10:
            $c += $url[$k + 9] << 16;
        case 9:
            $c += $url[$k + 8] << 8;
        case 8:
            $b += $url[$k + 7] << 24;
        case 7:
            $b += $url[$k + 6] << 16;
        case 6:
            $b += $url[$k + 5] << 8;
        case 5:
            $b += $url[$k + 4];
        case 4:
            $a += $url[$k + 3] << 24;
        case 3:
            $a += $url[$k + 2] << 16;
        case 2:
            $a += $url[$k + 1] << 8;
        case 1:
            $a += $url[$k + 0];
    }
    $mix = mix($a, $b, $c);
    return $mix[2];
}
示例#3
0
 function GCH($url, $length = null, $init = GMAG)
 {
     if (is_null($length)) {
         $length = sizeof($url);
     }
     $a = $b = 0.0;
     $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 9:
             $c += $url[$k + 8] << 8;
             /* the first byte of c is reserved for the length */
         /* the first byte of c is reserved for the length */
         case 8:
             $b += $url[$k + 7] << 24;
         case 7:
             $b += $url[$k + 6] << 16;
         case 6:
             $b += $url[$k + 5] << 8;
         case 5:
             $b += $url[$k + 4];
         case 4:
             $a += $url[$k + 3] << 24;
         case 3:
             $a += $url[$k + 2] << 16;
         case 2:
             $a += $url[$k + 1] << 8;
         case 1:
             $a += $url[$k + 0];
             /* case 0: nothing left to add */
     }
     $mix = mix($a, $b, $c);
     /*-------------------------------------------- report the result */
     return $mix[2];
 }
示例#4
0
function GCH($url, $length = null)
{
    $length = sizeof($url);
    $a = $b = 2654435769;
    $c = 3862272608;
    $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) {
        case 11:
            $c += $url[$k + 10] << 24;
        case 10:
            $c += $url[$k + 9] << 16;
        case 9:
            $c += $url[$k + 8] << 8;
        case 8:
            $b += $url[$k + 7] << 24;
        case 7:
            $b += $url[$k + 6] << 16;
        case 6:
            $b += $url[$k + 5] << 8;
        case 5:
            $b += $url[$k + 4];
        case 4:
            $a += $url[$k + 3] << 24;
        case 3:
            $a += $url[$k + 2] << 16;
        case 2:
            $a += $url[$k + 1] << 8;
        case 1:
            $a += $url[$k + 0];
    }
    $mix = mix($a, $b, $c);
    return $mix[2] < 0 ? 4294967296 + $mix[2] : $mix[2];
}