WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

ParagonIE_Sodium_Core32_SipHash::sipHash24() public WP 1.0

{} Это метод класса: ParagonIE_Sodium_Core32_SipHash{}

Хуков нет.

Возвращает

Строку.

Использование

$result = ParagonIE_Sodium_Core32_SipHash::sipHash24( $in, $key );
$in(строка) (обязательный)
$key(строка) (обязательный)

Код ParagonIE_Sodium_Core32_SipHash::sipHash24() WP 5.5.1

<?php
public static function sipHash24($in, $key)
{
    $inlen = self::strlen($in);

    # /* "somepseudorandomlygeneratedbytes" */
    # u64 v0 = 0x736f6d6570736575ULL;
    # u64 v1 = 0x646f72616e646f6dULL;
    # u64 v2 = 0x6c7967656e657261ULL;
    # u64 v3 = 0x7465646279746573ULL;
    $v = array(
        new ParagonIE_Sodium_Core32_Int64(
            array(0x736f, 0x6d65, 0x7073, 0x6575)
        ),
        new ParagonIE_Sodium_Core32_Int64(
            array(0x646f, 0x7261, 0x6e64, 0x6f6d)
        ),
        new ParagonIE_Sodium_Core32_Int64(
            array(0x6c79, 0x6765, 0x6e65, 0x7261)
        ),
        new ParagonIE_Sodium_Core32_Int64(
            array(0x7465, 0x6462, 0x7974, 0x6573)
        )
    );

    # u64 k0 = LOAD64_LE( k );
    # u64 k1 = LOAD64_LE( k + 8 );
    $k = array(
        ParagonIE_Sodium_Core32_Int64::fromReverseString(
            self::substr($key, 0, 8)
        ),
        ParagonIE_Sodium_Core32_Int64::fromReverseString(
            self::substr($key, 8, 8)
        )
    );

    # b = ( ( u64 )inlen ) << 56;
    $b = new ParagonIE_Sodium_Core32_Int64(
        array(($inlen << 8) & 0xffff, 0, 0, 0)
    );

    # v3 ^= k1;
    $v[3] = $v[3]->xorInt64($k[1]);
    # v2 ^= k0;
    $v[2] = $v[2]->xorInt64($k[0]);
    # v1 ^= k1;
    $v[1] = $v[1]->xorInt64($k[1]);
    # v0 ^= k0;
    $v[0] = $v[0]->xorInt64($k[0]);

    $left = $inlen;
    # for ( ; in != end; in += 8 )
    while ($left >= 8) {
        # m = LOAD64_LE( in );
        $m = ParagonIE_Sodium_Core32_Int64::fromReverseString(
            self::substr($in, 0, 8)
        );

        # v3 ^= m;
        $v[3] = $v[3]->xorInt64($m);

        # SIPROUND;
        # SIPROUND;
        $v = self::sipRound($v);
        $v = self::sipRound($v);

        # v0 ^= m;
        $v[0] = $v[0]->xorInt64($m);

        $in = self::substr($in, 8);
        $left -= 8;
    }

    # switch( left )
    #  {
    #     case 7: b |= ( ( u64 )in[ 6] )  << 48;
    #     case 6: b |= ( ( u64 )in[ 5] )  << 40;
    #     case 5: b |= ( ( u64 )in[ 4] )  << 32;
    #     case 4: b |= ( ( u64 )in[ 3] )  << 24;
    #     case 3: b |= ( ( u64 )in[ 2] )  << 16;
    #     case 2: b |= ( ( u64 )in[ 1] )  <<  8;
    #     case 1: b |= ( ( u64 )in[ 0] ); break;
    #     case 0: break;
    # }
    switch ($left) {
        case 7:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    0, self::chrToInt($in[6]) << 16
                )
            );
        case 6:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    0, self::chrToInt($in[5]) << 8
                )
            );
        case 5:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    0, self::chrToInt($in[4])
                )
            );
        case 4:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    self::chrToInt($in[3]) << 24, 0
                )
            );
        case 3:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    self::chrToInt($in[2]) << 16, 0
                )
            );
        case 2:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    self::chrToInt($in[1]) << 8, 0
                )
            );
        case 1:
            $b = $b->orInt64(
                ParagonIE_Sodium_Core32_Int64::fromInts(
                    self::chrToInt($in[0]), 0
                )
            );
        case 0:
            break;
    }

    # v3 ^= b;
    $v[3] = $v[3]->xorInt64($b);

    # SIPROUND;
    # SIPROUND;
    $v = self::sipRound($v);
    $v = self::sipRound($v);

    # v0 ^= b;
    $v[0] = $v[0]->xorInt64($b);

    // Flip the lower 8 bits of v2 which is ($v[4], $v[5]) in our implementation
    # v2 ^= 0xff;
    $v[2]->limbs[3] ^= 0xff;

    # SIPROUND;
    # SIPROUND;
    # SIPROUND;
    # SIPROUND;
    $v = self::sipRound($v);
    $v = self::sipRound($v);
    $v = self::sipRound($v);
    $v = self::sipRound($v);

    # b = v0 ^ v1 ^ v2 ^ v3;
    # STORE64_LE( out, b );
    return $v[0]
        ->xorInt64($v[1])
        ->xorInt64($v[2])
        ->xorInt64($v[3])
        ->toReverseString();
}