ParagonIE_Sodium_Core_Util::hashEquals

Advertisement

Summery Summery

Evaluate whether or not two strings are equal (in constant-time)

Syntax Syntax

ParagonIE_Sodium_Core_Util::hashEquals( string $left, string $right )

Parameters Parameters

$left

(Required)

$right

(Required)

Return Return

(bool)

Source Source

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

    public static function hashEquals($left, $right)
    {
        /* Type checks: */
        if (!is_string($left)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($left) . ' given.');
        }
        if (!is_string($right)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($right) . ' given.');
        }

        if (is_callable('hash_equals')) {
            return hash_equals($left, $right);
        }
        $d = 0;
        /** @var int $len */
        $len = self::strlen($left);
        if ($len !== self::strlen($right)) {
            return false;
        }
        for ($i = 0; $i < $len; ++$i) {
            $d |= self::chrToInt($left[$i]) ^ self::chrToInt($right[$i]);
        }

        if ($d !== 0) {
            return false;
        }
        return $left === $right;
    }

Advertisement

Advertisement

Leave a Reply