Ciao,

tu nell'inserimento dello user vai a codificare la password con l'algoritmo SHA1()
INSERT INTO `admin` (`id`, `nome`, `password`) VALUES ( '$id', '$mail', SHA1('$pass'))

Quando però vai a effettuare il controllo utilizzi la funzione hash() dove è necessario settare l'algoritmo.

Ora, $risultato["algoritmo"] è un valore di default nel db? suppongo si siccome non vai a settarlo nell'insert.
Sei sicuro che la stringa contenuto in esso sia proprio "sha1"?

$this->password = hash($risultato["algoritmo"], $this->password, true);