anche se il codice sopra può andare credo che l'ideale sia utilizzare un'impronta di messaggio per autenticarsi, cioè appena l'utente inserisce la sua password viene generato il codice hash, utilizzando cmq un salt e volendo quelche iterazione, e quando lo reinserisce viene ricalcolato l'hash e confrontato con quello già salvato, ecco un esempio:

codice:
import java.security.*;

public byte[] CalculateHash(String pass) {
SecureRandom s = new SecureRandom();
byte[] salt = new byte[12];//decidi tu quando grande fare il salt
s.nextBytes(salt);

MessageDigest md = MessageDigest.getInstance("MD5");//oppure SHA-1
md.update(salt);
md.update(pass.getBytes("UTF8"));
byte[] hash = md.digest();

return hash;
}
Fatto quasto hai ottenuto l'hash della password in formato di array di byte, fatto questo quando vorrai confrontare la password immessa con la sua impronta dovrai estrare il salt dal messaggio attaccarlo alla password inserita e confrontare:

codice:
import java.security.*;
import java.util.*;//per Arrays

public boolean isCorrect(String pass, byte[] hash) {
//hash è la password precedentemente salvata
byte[] salt;
byte[] p = pass.getBytes("UTF8");
System.arraycopy(hash, 0, salt, 0, 12);
//se cambi le dimensioni del salt devi cambiare anche in arraycopy
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(salt);
md.update(p);
byte[] result = md.digest();
return Arrays.equals(hash, p);
}
dovrebbe andare.