/**
 * Validate a password
 *
 * @param   string  $plaintext  The plain text password to validate
 * @param   string  $hashed     The password hash to validate against
 *
 * @return  boolean
 *
 * @since   4.0.0
 */
public function validatePassword($plaintext, $hashed)
{
    // Check the password
    $parts = explode(':', $hashed);
    $salt = @$parts[1];
    // Compile the hash to compare
    // If the salt is empty AND there is a ':' in the original hash, we must append ':' at the end
    $testcrypt = md5($plaintext . $salt) . ($salt ? ':' . $salt : (strpos($hashed, ':') !== false ? ':' : ''));
    return Crypt::timingSafeCompare($hashed, $testcrypt);
}