ParagonIE_Sodium_Core_Util::compare

Advertisement

Summery Summery

Compares two strings.

Syntax Syntax

ParagonIE_Sodium_Core_Util::compare( string $left, string $right, int $len = null )

Parameters Parameters

$left

(Required)

$right

(Required)

$len

(Optional)

Default value: null

Return Return

(int)

Source Source

File: wp-includes/sodium_compat/src/Core/Util.php

    public static function compare($left, $right, $len = null)
    {
        $leftLen = self::strlen($left);
        $rightLen = self::strlen($right);
        if ($len === null) {
            $len = max($leftLen, $rightLen);
            $left = str_pad($left, $len, "\x00", STR_PAD_RIGHT);
            $right = str_pad($right, $len, "\x00", STR_PAD_RIGHT);
        }

        $gt = 0;
        $eq = 1;
        $i = $len;
        while ($i !== 0) {
            --$i;
            $gt |= ((self::chrToInt($right[$i]) - self::chrToInt($left[$i])) >> 8) & $eq;
            $eq &= ((self::chrToInt($right[$i]) ^ self::chrToInt($left[$i])) - 1) >> 8;
        }
        return ($gt + $gt + $eq) - 1;
    }

Advertisement

Advertisement

Leave a Reply