Est “double hachage d'un mot de passe de moins en moins sûre juste hacher à la fois?

Est le hachage d'un mot de passe deux fois avant de le ranger plus ou moins en sécurité que juste hacher à la fois?

Quoi je parle, c'est cela:

$hashed_password = hash(hash($plaintext_password));

au lieu de seulement ceci:

$hashed_password = hash($plaintext_password);

Si elle est moins sûr, pouvez-vous fournir une bonne explication (ou un lien vers une)?

Aussi, la fonction de hachage utilisée faire une différence? Faut-il faire une différence si vous mélangez les md5 et sha1 (par exemple) au lieu de répéter la même fonction de hachage?

Note 1: Quand je dis "double hachage" je parle de hachage d'un mot de passe deux fois dans une tentative de le rendre plus lisible. Je ne parle pas de la la technique de résolution des collisions.

Note 2: je sais que j'ai besoin d'ajouter un hasard de sel pour le faire en sécurité. La question est de savoir si le hachage deux fois avec le même algorithme d'aide ou le mal du hachage.

  • Hash(password) et Hash(Hash(password)) sont tout aussi précaire. À la fois l'absence de la notion de Sémantique de Sécurité. Qui est, la sortie est à distinguer de façon aléatoire. Par exemple, MD5("password") est 5f4dcc3b5aa765d61d8327deb882cf99. Je sais que c'est le hash MD5 de password, et il est distinguer de façon aléatoire. Au lieu de cela, vous devez utiliser un HMAC. Son abri et sa PRF.