Comment Utiliser SHA1 ou MD5 en C#?(Ce qui est le Mieux dans la Performance et de Sécurité pour l'Authentification)
En C# comment nous pouvons utiliser SHA1 automatiquement?
Est SHA1 mieux que MD5?(Nous utilisons de hachage pour le nom d'utilisateur et le mot de passe et le besoin de vitesse pour l'authentification)
- Je voudrais des conseils SHA1 avec le sel.
- Je vous conseille SHA256. SHA1 est maintenant considéré comme faible.
- Je vous conseille RIPEMD160. Heres la façon de l'utiliser en C# msdn.microsoft.com/en-us/library/...
- Comment est l'authentification de la vitesse est un problème? Même à l'aide de la clé de renforcement (ce qui devrait!), l'authentification fonctionne toujours, dans la centaine de millisecondes. Aussi, assurez-vous de l'utilisation par utilisateur sels, ce qui est plus important que MD5 vs SHA.
- En général, vous voulez les mauvaises performances de hachage de mot de passe. Généralement, vous utilisez un système qui ralentit le hachage vers le bas pour ralentir les attaques par force brute vers le bas.
- Veuillez noter: l'on a accepté La réponse est très mauvais, surtout maintenant que c'est plusieurs années plus tard. À l'aide de la réponse qui est donnée PERMETTRA d'exposer votre système et les utilisateurs à des risques inutiles, que ces mots de passe peuvent être (presque trivialement) récupérées et utilisées pour usurper les utilisateurs dans une attaque d'usurpation d'identité. Veuillez voir @Dragontamer5788 la réponse ci-dessous, concernant bcrypt/scrypt/etc.
Vous devez vous connecter pour publier un commentaire.
Pas sûr de ce que tu veux dire par automatiquement, mais vous devriez vraiment utiliser
SHA256
et plus. Aussi toujours utilisation d'un Sel (code) avec vos tables de hachage. Une note de côté, après le temps a passé, à l'aide trempé hachages est beaucoup mieux que d'utiliser une plaine de vitesse fonction de hachage. I. e.: le hachage de plus de quelques centaines d'itérations, ou à l'aide de déjà prouvé que les fonctions de hachage commebcrypt
(ce qui est mentionné ci-dessous, je crois). Un exemple de code pour utiliser une fonction de hachage SHA256 dans .NET est comme suit:Fera l'affaire pour vous, en utilisant SHA256 et se trouve à MSDN.
Note sur le "craquage" de SHA1: Mettre la fissuration de l'algorithme SHA-1 en perspective
Rfc2898DeriveBytes
simple que SHA1.SHA1 est plus fort que MD5, donc si vous avez le choix, il serait préférable de l'utiliser. Voici un exemple:
BitConverter.ToString
renvoie une chaîne hexadécimale, qui explique à la fois le tiret de remplacement et les majuscules question.SHA1CryptoServiceProvider cryptoTransformSHA1 = new SHA1CryptoServiceProvider();
doit être enveloppé dans un utilisation déclaration, je pense que, comme l'une de ses classes de base met en œuvre IDisposable.Les deux sont trop rapides pour être utilisé, directement au moins. Utilisez la Touche de Renforcer pour "ralentir" le hachage de mot de passe de la procédure. La vitesse est la malheureusement l'ennemi pour le mot de passe de sécurité.
Quelle vitesse est assez lente? Ralentissement d'un hachage de mot de passe à partir de ~microsecondes à ~des centaines de millisecondes, ne nuise pas à la perception de la performance de votre application... mais faire de craquage de mots de passe littéralement des centaines de milliers de fois plus lent.
Voir cet article pour plus de détails:
http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html
... snip ...
Cela dit, l'utilisation BCrypt. SCrypt a été récemment mis au point, mais je doute que tout stable (de production ou de prêt) il existe des librairies pour l'instant. Théoriquement, SCrypt revendications pour améliorer BCrypt. "La construction de votre propre" n'est pas recommandée, mais l'itération MD5 /SHA1 et SHA256 des milliers de fois devrait faire l'affaire (c'est à dire: la Clé du Renforcement).
Et dans le cas où vous ne savez pas à propos d'eux, assurez-vous de lire sur les Tables arc-en-ciel. La sécurité de base, trucs.
De MSDN
utiliser SHA1 ou SHA2 de L'algorithme MD5 est problématique.
http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html
http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5%28v=vs.85%29.aspx
J'aimerais utiliser ces choses.
MD5, SHA1/256/384/512 avec une option de paramètre d'Encodage.
Othere HashAlgorithms.Grâce à Darin Dimitrov.
MD5 est de mieux en performance et SHA1 est mieux pour la sécurité. Vous pouvez vous faire une idée de cette comparaison