IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

algorithme de chiffrement de mot de passe


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut algorithme de chiffrement de mot de passe
    Bonjour,
    Je cherche un algorithme de chiffrement de mot de passe reversible pour stocker des mots de passe dans une base de donnée.
    J'ai essayé AES et DES, le problème est qu'ils renvoient des valeurs trop longue, pas facile à entrer pour l'utilisateur.
    Quelqu'un a-t-il une solution ?
    Merci

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par mld_webcom2d Voir le message
    [...] le problème est qu'ils renvoient des valeurs trop longue, pas facile à entrer pour l'utilisateur.
    A entrer par l'utilisateur ?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    Pourquoi reversible, quel est ton besoin ?

    Et pourquoi l'utilisateur devrait il rentrer les valeurs cryptées ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Je ne comprends pas trop le problème... l'utilisateur n'est jamais supposé manipuler le mot de passe chiffré !

    Qu'est-ce que tu cherches à faire au juste ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Autant pour moi l'utilisateur n'a bien entendu pas a manipuler les données chiffrées. J'étais surement (très) mal réveillé !

  6. #6
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Du coup quel est ton besoin ? Et qu'est-ce qui t'empêche d'utiliser AES ou DES3 ?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    En fait, mon besoin est de pouvoir générer un mot de passe par exemple en fonction du login de l'utilisateur pour de le stocker dans la bdd crypté en md5 tout en ayant la possibilité de recalculer le mot de passe pour le renvoyer à l'utilisateur par email ou sms. L'AES me permettait de générer un mot de passe en fonction d'une chaine de caractère, mais la chaîne générée est trop longue.


    En gros je cherche un algo qui me permettrait d'encoder et de décoder une chaine de caractère et que la chaîne encodée ne soit pas trop longue...

  8. #8
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Juste pour être sûr... c'est pour utiliser avec quel type d'application derrière ? Et quelle base de données ?

    Y a quelque chose de natif sur SQLServer avec le framework .Net qui fonctionne très bien pour faire ça.

    La chaîne générée est trop longue par rapport à quoi ?
    Forcément si c'est crypté c'est plus volumineux...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    Non c'est pas comme ca qu'on fait.

    Ton système ne doit pas être capable de retrouver le mot de passe de ton utilisateur.

    Pour la fonction 'mot de passe perdu', tu génère un lien unique pour saisir un nouveau mot de passe ou alors tu modifie le mot de passe avec un 'random' et tu envoie ceci par mail a ton utilisateur, en lui demandant de le changer à la première connexion.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    C'est pour une base de donnée mysql pour le développement d'un webservice en c#. En fait, lorsqu'un utilisateur créé un contact il entre son adresse email ou son numéro de portable et là un webservice génère le mot de passe. Puis quand l'utilisateur envoie un message au contact créé le contact reçoit soit par mail soit par sms une invitation à se connecter au site web contenant le login et mot de passe.
    Sachant que le mot de passe créé est crypté en md5, il me faut un moyen pour le retrouver et l'envoyer au contact.

    J'espère avoir été clair.
    Merci pour ton aide.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    En fait je vois pas le rapport entre le fait de chiffrer le mot de passe pour le stockage en BDD, et le fait de générer un nouveau mot de passe. J'ai l'impression que tu mélanges deux idées qui n'ont pas de lien entre elles...

    Pour le chiffrement, utilise les classes Aes ou DES.

    Pour générer un mot de passe, tu peux faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static readonly Random _random = new Random();
    static string GeneratePassword(int length)
    {
        const string passwordChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        char[] chars = new char[length];
        for (int i = 0; i < length; i++)
        {
            chars[i] = passwordChars[_random.Next(0, passwordChars.Length)];
        }
        return new string(chars);
    }
    Ca n'a absolument rien à voir avec le chiffrement...

    Plus précisément : quand tu génères un nouveau mot de passe pour l'utilisateur, tu lui envoies par mail en clair. C'est seulement dans la base de données que le mot de passe doit être chiffré

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    Pourquoi tu n'envoie pas le mot de passe généré, avant de le crypter ?

    C'est beaucoup + simple, fiable et pertinent.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    En fait je suis les specs et en plus mon chef de projet est en vacances...

    Donc j'ai 2 webservices :
    - un pour la création d'un contact, lorsque l'on créé un contact, soit via un site web soit via une application android ce contact devient un utilisateur et un mot de passe est généré mais aucun mail ni sms n'est envoyé pour l'instant.
    - un deuxième webservice est utilisé lorsque l'on envoie un message au contact, et ce contact doit recevoir un mail ou un sms avec son login et son mot de passe.

    De plus, le mot de passe doit être enregistré en md5 dans la base de donnée, donc je doit implémenter une méthode permettant de retrouver le mot de passe indépendamment de ce qui se trouve dans la bdd, par exemple en générant le mot de passe a partir du login et de l'heure de création + un salt avec un algo qui soit reversible pour renvoyer le mdp via le webservice n°2

  14. #14
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Bonjour,
    Que ce passe t'il entre le 1er et le 2ème WebService ?
    Je veux dire, une fois l'utilisateur créé dans le 1er WebService,
    Qui appelle le 2ème ? L'utilisateur ? Le 1er WebService ?

    Si tu veux absolument coder une backdoor dans ton projet
    Et mettre en péril sa sécurité et celle de tes utilisateurs,
    Ça ne tient qu'à toi ^^ (Il sera content ton chef ^^)
    Mais tout le monde ici te déconseillera de le faire

    La méthode de nah666 est de loin la meilleure (à mon gout ),

    Si tu souhaites absolument jouer avec le cryptage/décryptage ...
    Il te faut des algo reversibles tel que César, Vigenère ou mieux ... RSA ...

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    En fait un utilisateur peut créer un contact (appel du 1er webservice). Ce même utilisateur envoie un message à son contact et là le 2eme webservice est appelé, et le contact reçoit un mail ou sms indiquant qu'il a reçu un message et que son compte à été créé.
    Dans l'idée du chef de projet, on reçoit une alerte sms ou mail losque l'on reçoit un message, pas lorsque notre compte est créé. D'où la necessité de pouvoir retrouver le mdp entre les 2 appels de webservice (soit entre la création du mot de passe et l'envoi du mot de passe).

    je rajoute qu'une fois que le contact se connecte on lui demande de changer son mot de passe donc la "backdoor" est courte durée. Mais si quelqu'un à une autre solution...

  16. #16
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Donc tant que l'utilisateur n'a pas envoyé de message à son nouveau contact,
    Ce dernier ne sait pas qu'il a un compte ?
    Donc pourquoi créer son mot de passe avant ce premier envoi ?

    Tu pourrais envisager de créer le mot de passe à l'envoi du message,
    Donc via le 2ème webservice, tu le sauvegardes et l'envoies ...

    Mais donc, un utilisateur créé des comptes pour d'autres personnes ?
    En utilisant leur adresse mail et leur numéro de portable ?
    C'est légal ça ? Oo
    Tu leur crée un compte FesseBouc en prime ?

    Qui plus est, si deux personnes ont un même contact,
    Il faut pas que t'en créé 2 ...

  17. #17
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par brachior
    Mais donc, un utilisateur créé des comptes pour d'autres personnes ?
    En utilisant leur adresse mail et leur numéro de portable ?
    C'est légal ça ? Oo
    Tu peux très bien faire créer un compte dans ton application pour un client par une équipe de support par exemple..
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Mais donc, un utilisateur créé des comptes pour d'autres personnes ?
    Oui, je ne pense pas que cela soit illégal et c'est une application plus à but professionnel donc je ne pense pas que les gens en abusent. En fait, le compte n'est pas vraiment créé, mais "précréé". Libre au contact de devenir utilisateur ou non, mais s'il veut pouvoir lire ses messages il doit le devenir.
    Et non, on ne créé pas de compte facebook.

    Sinon, j'ai pensé à une solution technique :
    - un mot de passe aléatoire est généré par le webservice 1 et crypté en AES puis stocké tel quel dans la base
    - AES étant reversible on peut récupérer le mot de passe pour l'envoyer lors de la reception d'un message
    - lorsque l'utilisateur change son mot de passe à la connection, celui-ci
    est crypté en md5 pour plus de sécurité.
    Cette solution vous parait-elle plus fiable et sécurisée ?

  19. #19
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Tu peux très bien faire créer un compte dans ton application pour un client par une équipe de support par exemple..
    Avec l'accord du client ... Faut pas abuser ...
    Sinon là je monte un site de pub
    Et je récupère toutes les adresses que je peux via Google
    Et c'est parti pour le spam ...

    Enfin bon, je sais que des sociétés le font,
    Mais je trouve que ça va vraiment à l'encontre des libertés sur internet.
    Ça m'écœure toujours ces trucs là ...

    A part ça ...
    Citation Envoyé par mld_webcom2d
    Et non, on ne créé pas de compte facebook.
    C'était ironique ^^
    Je l'espère bien ^^

    Citation Envoyé par mld_webcom2d
    Sinon, j'ai pensé à une solution technique :
    - un mot de passe aléatoire est généré par le webservice 1 et crypté en AES puis stocké tel quel dans la base
    - AES étant reversible on peut récupérer le mot de passe pour l'envoyer lors de la reception d'un message
    - lorsque l'utilisateur change son mot de passe à la connection, celui-ci
    est crypté en md5 pour plus de sécurité.
    Cette solution vous parait-elle plus fiable et sécurisée ?
    Je ne comprend toujours pas l'intérêt de mettre un mot de passe réversible pour protéger des données que personnes ne peut accéder ...
    (car comme tu le dis, il faut avoir un compte, donc un mot de passe)

    Tu pourrais utiliser un mot de passe commun pour tous les comptes en attente d'activation ...

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Tu pourrais utiliser un mot de passe commun pour tous les comptes en attente d'activation ...
    Tu me parlais de backdoor, mais là ça me semble vraiment pas sécurisé !

    Je ne comprend toujours pas l'intérêt de mettre un mot de passe réversible pour protéger des données que personnes ne peut accéder ...
    (car comme tu le dis, il faut avoir un compte, donc un mot de passe)
    Lors de la première connexion, le contact doit entrer son mdp reçu par mail, ensuite il modifie son mdp sans autre vérification. Donc il suffit qu'il ait le mdp envoyé par mail pour lire ses données.

Discussions similaires

  1. Meilleur chiffrement mot de passe
    Par franfr57 dans le forum Langage
    Réponses: 7
    Dernier message: 02/04/2010, 17h26
  2. [Spip] Chiffrement ou hachage du mot de passe
    Par marty499 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/03/2009, 21h40
  3. un algorithme pour mot de passe
    Par tsrsi2006 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 26/02/2009, 17h36
  4. [LDAP] Chiffrement mot de passe LDAP pour interface en PHP
    Par sedannais dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 10/08/2007, 16h17
  5. Réponses: 10
    Dernier message: 23/05/2007, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo