réversible - salt php




Cryptage des mots de passe (5)

Envisager d'utiliser bcrypt il est utilisé dans de nombreux cadres modernes comme laravel.

Quel est le moyen le plus rapide et le plus sûr de crypter les mots de passe (PHP préféré), et quelle que soit la méthode choisie, est-ce que c'est portable?

En d'autres termes, si mon site est ensuite migré vers un autre serveur, mes mots de passe continueront-ils à fonctionner?

La méthode que j'utilise maintenant, comme on me l'a dit, dépend des versions exactes des bibliothèques installées sur le serveur.


Il convient de noter que vous ne voulez pas chiffrer le mot de passe, vous voulez le hacher .

Les mots de passe cryptés peuvent être décryptés, permettant à quelqu'un de voir le mot de passe. Le hachage est une opération à sens unique, le mot de passe d'origine de l'utilisateur est donc (cryptographiquement) disparu.

Pour ce qui est de l’algorithme que vous devez choisir, utilisez celui standard actuellement accepté:

  • SHA-256

Et quand vous hachez le mot de passe de l’utilisateur, assurez-vous d’y ajouter un autre fichier indésirable. par exemple:

  • mot de passe: password1
  • sel: PasswordSaltDesignedForThisQuestion

Ajoutez le sel au mot de passe de l'utilisateur:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");

Je suis avec Peter. Les développeurs ne semblent pas comprendre les mots de passe. Nous choisissons tous MD5 ou SHA1 (et j'en suis coupable) car ils sont rapides. En y repensant (parce que quelqu'un me l'a récemment signalé), cela n'a aucun sens. Nous devrions choisir un algorithme de hachage qui est stupide et lent. Je veux dire, à l’échelle des choses, un site occupé, des mots de passe de hachage quoi? toutes les 1/2 minutes? Qui se soucie si cela prend 0,8 seconde contre 0,03 seconde pour le serveur? Mais cette lenteur supplémentaire est énorme pour prévenir tous les types d’attaques de brute forcée.

De mon point de vue, bcrypt est spécialement conçu pour le hachage sécurisé des mots de passe. Il est basé sur blowfish, et il y a beaucoup d'implémentation.

Pour PHP, consultez PHPPass http://www.openwall.com/phpass/

Pour toute personne utilisant .NET, consultez BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx


Quoi que vous fassiez, n'écrivez pas votre propre algorithme de chiffrement. Faire cela vous garantira presque (sauf si vous êtes un cryptographe) qu’il y aura une faille dans l’algorithme qui le rendra insignifiant.


password_hash ( string $password , int $algo [, array $options ] ) . (PHP 5> = 5.5.0, PHP 7)

password_hash () crée un nouveau hachage de mot de passe en utilisant un algorithme de hachage unidirectionnel puissant. password_hash () est compatible avec crypt (). Par conséquent, les hachages de mots de passe créés par crypt () peuvent être utilisés avec password_hash ().





passwords