protected static function hashEquals($a, $b)
    {
        if (function_exists('hash_equals')) {
            return hash_equals($a, $b);
        }
        $nonce = openssl_random_pseudo_bytes(32);
        return hash_hmac(self::HASH_ALGO, $a, $nonce) === hash_hmac(self::HASH_ALGO, $b, $nonce);
    }
protected static function hashEquals($a, $b)
    {
        if (function_exists('hash_equals')) {
            return hash_equals($a, $b);
        }
        $nonce = openssl_random_pseudo_bytes(32);
        return hash_hmac(self::HASH_ALGO, $a, $nonce) === hash_hmac(self::HASH_ALGO, $b, $nonce);
    }
protected static function hashEquals ( $ a , $ b ) { if ( function_exists ( 'hash_equals' ) ) { return hash_equals ( $ a , $ b ) ; } $ nonce = openssl_random_pseudo_bytes ( 32 ) ; return hash_hmac ( self :: HASH_ALGO , $ a , $ nonce ) === hash_hmac ( self :: HASH_ALGO , $ b , $ nonce ) ; }
Compare two strings without leaking timing information

@param string $a
@param string $b
@ref https://paragonie.com/b/WS1DLx6BnpsdaVQW
@return boolean
Compare two strings without leaking timing information