0
votes

Comment faire des mots de passe des utilisateurs de hachage?

S'il vous plaît ne marquez pas cela comme un duplicata, car j'ai déjà vérifié plusieurs messages, mais aucun d'entre eux n'a aidé à moi.

ASP.NET MVC - Comment faire un mot de passe de hachage

mots de passe de hachage et de sel en C #

Je construis un site Web qui possède une page de connexion et j'ai lu ce message

HTTPS: // www. codeproject.com/articles/704865/salted-password-hashaing-dacéing-it-right#normalhagring

sur la façon de faire mon login sécurisé.

Je comprends maintenant que sur chaque inscription, je dois créer des CSprngs (générateur de numéros de pseudotage cryptographiquement) et ajoutez-le au mot de passe soumis par l'utilisateur, puis de hachage, ce mélange et stockez-le dans la base de données et stockez le sel pour chaque utilisateur, car il est aléatoire pour chaque utilisateur. Ma question est ce qui est le moyen le plus facile et le plus simple de le faire.

dans mon contrôleur, je prends le nom d'utilisateur et le mot de passe via cette méthode xxx

Mon modèle de connexion contient xxx

donc je reçois le nom d'utilisateur et le mot de passe comme (string a = data.Asername, ...)

J'ai déjà ajouté ceci à mon projet mais je ne sais pas comment continuer ici xxx je sais sauvegarder dans la DB à coup sûr je veux juste savoir, Comment faire un sel aléatoire (peut-être utiliser RngCryptoServiceProvider) et comment l'ajouter au mot de passe de l'utilisateur, puis hachane le résultat final. Merci pour toute aide.


4 commentaires

Quelle est votre version de Framework ?NET?


Je me sens un peu comme la réponse de Welldart sur le deuxième poste que vous connaissez pour couvrir tout cela, avec un exemple complet (et WinDart est très bon sur la sécurité; peut-être la seule chose clé qui change au fil du temps qu'il y a le choix de Crypto Algorithm) (note : getBytes sur un rngcryptoserviceProvider peut vous donner du sel aléatoire)


@ karthickj25 4.5


@Marcgravell, je vais vérifier à nouveau.


3 Réponses :


6
votes

La réponse à chaque "Comment est-ce que je suis en sécurité des mots de passe" est la même chose: vous ne . Vous êtes dans les affaires de faire des sites Web uniques, non pas dans l'entreprise de sécurité. Vous ne savez pas ce que vous faites, et vous ne reconnaîtrez pas si vous faites quelque chose de mal. Jusqu'à ce que votre base de données fuit d'une manière ou d'une autre, puis vous êtes trop tard pour faire quoi que ce soit, compromettez la sécurité de vos utilisateurs.

Vous utilisez bien la recherche, la bataille-trempe, entretenu code pour stocker les connexions utilisateur. Lorsque vous êtes sur ASP.NET MVC, vous utilisez Identité ASP.NET < / a>. Vous ne roulez pas le vôtre. Point final.


0 commentaires

3
votes

Vous pouvez faire de l'ajout de sel et de hacher le mot de passe en utilisant une méthode telle que celle-ci. Ici, nous envoyons une méthode une chaîne. C'est fondamentalement comment l'entité Framework Hash est un mot de passe lorsque vous créez un utilisateur à l'aide de la section Connexion.

    public static string EncodePassword(string password)
    {
        byte[] salt;
        byte[] buffer2;
        if (password == null)
        {
            throw new ArgumentNullException("password");
        }
        using (Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(password, 0x10, 0x3e8))
        {
            salt = bytes.Salt;
            buffer2 = bytes.GetBytes(0x20);
        }
        byte[] dst = new byte[0x31];
        Buffer.BlockCopy(salt, 0, dst, 1, 0x10);
        Buffer.BlockCopy(buffer2, 0, dst, 0x11, 0x20);
        return Convert.ToBase64String(dst);
    }//Entity Framework default way 


3 commentaires

Merci d'avoir répondu, mais je me demande pourquoi vous utilisez la mémoire tampon, y a-t-il un moyen de simplement obtenir le sel dans une chaîne et d'ajouter le mot de passe et le haché sera stocké dans DB comme une chaîne.


@riario L'intention utilise hachage salé lente , il est nécessaire d'utiliser un nombre raisonnable d'itérations pour ralentir la recherche de force brute. Vous pouvez également rechercher Internet pour PBKDF2, ARGON2 ou BRYPT Algorithm pour stocker les mots de passe (en effet RFC2898 définis PBKDF2 comme une norme)


@riario n'échappe pas aux données binaires brutes. Les hachages de mot de passe sont, par nature, des données binaires brutes, pas des chaînes. Vous devriez les traiter comme tels.