2013-01-23 6 views
2

Possible en double:
What algorithm should I use to hash passwords into my database?quel algorithme préféré pour hacher les mots de passe C#?

Je suis nouveau à ce hash mot de passe. J'ai lu le hachage + sel rendre les mots de passe vraiment sûrs. Mais encore confus quel algorithme de hachage dois-je utiliser car il y en a beaucoup comme.

MD5CryptoServiceProvider SHA1Managed SHA256Managed etc.

Comment puis-je décider qui est bon pour moi ou tous sont égaux. Puis-je ramasser quelqu'un aveuglément?

+0

Le doublon mentionné ne répond pas vraiment à la question. Les réponses ne proposent pas non plus d'algorithmes appropriés et ne disent pas non plus comment les utiliser avec CSharp. – martinstoeckli

Répondre

3

MD5:

En 1996, une faille a été trouvé avec la conception de MD5, et alors qu'il était pas une faiblesse clairement fatale , les cryptographes ont commencé à recommander l'utilisation de l'autre algorithme s, comme SHA-1-qui a depuis été trouvé à être aussi vulnérable.

SHA1:

En 2005, cryptanalystes trouvé attaques sur SHA-1 ce qui suggère que l'algorithme pourrait ne pas être assez sûr pour une utilisation continue

SHA2 qui SHA256 est un type de n'a pas de vulnérabilité connue au moment de l'écriture.

+0

merci pour la réponse. Je vais utiliser SHA2. –

3

Les algorithmes de hachage rapide comme MD5, SHA-1 ou même SHA-256 sont et non bons choix pour hacher les mots de passe, car ils sont beaucoup trop rapides et peuvent être forcés brutalement trop facilement. On peut calculer environ 3 Giga SHA-1 values par seconde avec un matériel commun en 2013.

A la place, vous pouvez utiliser une fonction de dérivation lente comme BCrypt ou PBKDF2. CSharp a un support natif pour PBKDF2, il peut être implémenté avec la classe Rfc2898DeriveBytes, un exemple que vous pouvez trouver here.

Aussi facile à utiliser est-ce BCrypt library. Souvent, les gens ne sont pas sûrs qu'il est sécuritaire d'utiliser de telles bibliothèques, mais je ne pense pas qu'il y ait des arguments contre son utilisation. Tant que la bibliothèque renvoie la valeur correcte et génère le sel correctement, cela devrait être correct, car la sécurité provient de l'algorithme et non de l'implémentation.

+0

merci pour votre réponse. Je vais essayer ça. –

+0

@DJ Ajout de liens vers des exemples d'implémentation pour PBKDF2 et BCrypt. – martinstoeckli

Questions connexes