Eu acredito que você não armazena senhas em texto simples. Mas muitos programadores ainda armazenam senhas com hash MD5, talvez salgadas. De acordo com isso: http://en.wikipedia.org/wiki/MD5 – alguns processadores gráficos podem computar de 16 a 200 milhões de hashes por segundo. Tente também pesquisar no Google por cracker de hash salgado md5 .
MD5 foi projetado para verificações de integridade de dados – calcule hash de arquivo, rápido plz!
É por isso que MD5 não deve ser usado para hash de senha.
Então, como fazer hash de senhas com segurança? Eu uso esta função:
function calculateHash($password, $salt = NULL) {
return crypt($password, $salt ?: '$2a$07$' . Strings::random(22));
}
Agora, para obter a senha com hash, chame calculateHash($plainpass)
e para verificar a senha, use essa senha com hash como segundo parâmetro:
if($hashedPassFromDb == calculateHash($plainpass, $hashedPassFromDB)){
// correct!
} else {
// blah!
}
Docs: http://php.net/crypt
Strings :: random: http://api.nette.org/2.1.0/source-Utils.Strings.php.html#399-428