diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index f3b597830b129408105aec6cdebe937b0252090a..001f214229c52019eb3752dd084671fb5e437d32 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -128,19 +128,22 @@ class remoting {
 			$app->db->query($sql, $remote_session,$remote_userid,$remote_functions,$tstamp);
 			return $remote_session;
 		} else {
-			$sql = "SELECT * FROM remote_user WHERE remote_username = ? and remote_password = ?";
-			$remote_user = $app->db->queryOneRecord($sql, $username, $app->auth->crypt_password($password));
-			if(!$remote_user) {
-				// fallback to md5
-				$sql = "SELECT * FROM remote_user WHERE remote_username = ? and remote_password = ?";
-				$remote_user = $app->db->queryOneRecord($sql, $username, md5($password));
-				if($remote_user) {
+			$sql = "SELECT * FROM remote_user WHERE remote_username = ?";
+			$remote_user = $app->db->queryOneRecord($sql, $username);
+			if($remote_user) {
+				if(substr($remote_user['remote_password'], 0, 1) === '$') {
+					if(crypt(stripslashes($password), $remote_user['remote_password']) != $remote_user['remote_password']) {
+						$remote_user = null;
+					}
+				} elseif(md5($password) == $remote_user['remote_password']) {
 					// update hash algo
 					$sql = 'UPDATE `remote_user` SET `remote_password` = ? WHERE `remote_username` = ?';
 					$app->db->query($sql, $app->auth->crypt_password($password), $username);
+				} else {
+					$remote_user = null;
 				}
 			}
-			if($remote_user['remote_userid'] > 0) {
+			if($remote_user && $remote_user['remote_userid'] > 0) {
 				if (trim($remote_user['remote_ips']) != '') {
 					$allowed_ips = explode(',',$remote_user['remote_ips']);
 					foreach($allowed_ips as $i => $allowed) {