Faça um favor a si mesmo e use uma biblioteca padrão para fazer hash de suas senhas.
Como a segurança tende a ser muito mais complicada e com mais possibilidades de erros invisíveis do que a maioria dos programadores poderia resolver sozinhos, usar uma biblioteca padrão é quase sempre a opção mais fácil e segura (se não a única).
A biblioteca padrão :
Dê uma olhada em:Estrutura de hash de senha PHP portátil :phpass e certifique-se de usar o
CRYPT_BLOWFISH
algoritmo, se possível. exemplo de código usando phpass (v0.2):
require('PasswordHash.php');
$pwdHasher = new PasswordHash(8, FALSE);
// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );
// $hash would be the $hashed stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
echo 'password correct';
} else {
echo 'wrong credentials';
}
O PHPass foi implementado em alguns projetos bastante conhecidos:
- phpBB3
- WordPress 2.5+, bem como bbPress
- a versão Drupal 7, (módulo disponível para Drupal 5 e 6)
- outros
O bom é que você não precisa se preocupar com os detalhes, esses detalhes foram programados por pessoas com experiência e revisados por muita gente na internet.
Faça o que fizer se optar pelo 'farei eu mesmo, obrigado ', não use
MD5
mais . É um bom algoritmo de hash, mas completamente quebrado para fins de segurança . Atualmente, usando crypt , com CRYPT_BLOWFISH é a melhor prática.
CRYPT_BLOWFISH em PHP é uma implementação do hash Bcrypt. O Bcrypt é baseado na cifra de bloco Blowfish, fazendo uso de sua configuração de chave cara para diminuir a velocidade do algoritmo.
Para obter mais informações sobre esquemas de armazenamento de senha, você também pode ler Jeff `s post sobre isso:Você provavelmente está armazenando senhas incorretamente