8
votes

Comment facilement saler un mot de passe dans une application de formulaire Windows C #?

Comment puis-je facilement saler un mot de passe d'une textbox.text?

Y a-t-il des éléments intégrés à la magie dans la framework .NET?


1 commentaires

Vous pouvez facilement utiliser ce Encrypto.codeplex.com


5 Réponses :


2
votes

Voici un Nice Article et Un autre (qui est plus adapté aux applications ASP.NET).


1 commentaires

Le deuxième article est meilleur, car il permet une taille de sel arbitraire. Le premier recommande un sel de 4 octets; certainement un chemin trop petit. Les sels devraient être longs. Je ne vous critique pas, je ne fais que placer cela ici pour la postérité. :)



0
votes

Il n'y a pas de sorcier, un sel est simplement un texte aléatoire ajouté à un mot de passe pour vaincre les attaques de dictionnaires - composez votre propre JibBerish.


0 commentaires

0
votes

Regardez les fonctions HMAC comme HMACDM5 , hmacsha1 ou hmacsha256 . de
Regardez le System.Security.Cryptography Espace de noms, aussi.


0 commentaires

14
votes

Nous avons eu une bonne discussion il y a un moment sur les meilleures pratiques lors de la salage d'un mot de passe, vous pourriez trouver de bonnes idées:

salage de votre mot de passe: meilleures pratiques?

J'ai trouvé que l'un des plus faciles, tout en étant toujours assez sécurisé, est utiliser un guid comme votre sel. C'est aléatoire et suffisamment long. Cela fonctionne mieux si vous incluez la mise en forme de la chaîne du GUID (les caractères '{' et '-'), mais vous n'êtes pas obligé.

N'oubliez pas que le sel doit être unique par article salé et que pour être le plus sécurisé, vous devez utiliser un générateur de nombres aléatoires sécurisés cryptographiquement. N'oubliez pas que vous devez stocker votre sel avec le mot de passe, ou vous ne pourrez pas vérifier la version plainte sur la version hachée! Vous pouvez stocker le sel non crypté si vous le souhaitez; Je l'ai généralement placé dans un champ sur la même table que le mot de passe. Le but du sel n'est pas de rester caché, il est difficile de faire en sorte que les tables arc-en-ciel sont difficiles (espérons-elles impossibles) de calculer rapidement.

Voici un extrait rapide qui fonctionnera en C #: xxx

ou ... xxx


2 commentaires

Si vous génèverez des sels aléatoires, n'oubliez pas de les conserver à mesure que vous en avez besoin pour déchiffrer.


@ADAM: Bon point. J'ai initialement eu une phrase à cet effet mais je l'ai apparemment éditée. Je vais le remettre dans.



4
votes

Je suppose que vous demandez un nom d'utilisateur avec le mot de passe?

Dans certains systèmes, le nom d'utilisateur est utilisé comme sel. (Et je pense que c'est bien de faire ça.) Sinon, vous aurez besoin de votre sel entreposé quelque part et de le récupérer avant le hachage (en cas de sel créé au hasard) ou d'avoir un algorithme qui retournera le même sel pour le même utilisateur (et il n'est pas préférable d'utiliser une plaine Nom d'utilisateur).

Utilisez personnellement le code suivant: xxx


0 commentaires