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

Windows Forms Discussion :

Chiffrer/Dechiffrer un Password


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Chiffrer/Dechiffrer un Password
    Bonjour,

    Je suis acctuellement en stage et je doit réaliser un projet en C# (langage que je ne maîtrese pas encore) jusque la pas de problème mais sa fait deux jours que je suis a la recherche d'une fonction, methode ou même algo "fait maison" bref un truc pour m'orienter car je doit stocker un mot de passe dans un fichier texte puis le resortir lors de la connection a une base SQL server (ok tranquille ) seulement laisser un beau mdp en clair, dans un fichier texte en plus, sa se fait pas beaucoup du tout beaucoup.

    Habituellement je cryptai toute les donnée sensibles en MD5 mais ici c'est bien un mot de passe en claire qui est utilisé pour se co à SQL Server.

    J'aimerai bien pouvoir passer enfin à autre chose mais je suis du genre obstiné

    Merci d'avance...

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Regarde du côté du fichier de configuration (App.config), il sert à stocker des informations dont celles servant à se connecter à une base de données.

    Et tu peux en crypter certaines parties.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par laedit Voir le message
    Regarde du côté du fichier de configuration (App.config), il sert à stocker des informations dont celles servant à se connecter à une base de données.

    Et tu peux en crypter certaines parties.
    je confirme, on passe toujours par le fichier de config.
    le probleme etant qu'en Web, ca le gère tout seul mais app.config, je crois qu'il faut le faire à la main
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Très bien merci,

    je vais faire un petit tour d'horizon des fichiers de configuration, si j'ai bien compri c'est un bête fichier xml un peu comme un fichier ini (que C# ne gère plus avec les dll actuel )...

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par John Easy Voir le message
    Très bien merci,

    je vais faire un petit tour d'horizon des fichiers de configuration, si j'ai bien compri c'est un bête fichier xml un peu comme un fichier ini (que C# ne gère plus avec les dll actuel )...
    ah oui, ca fait quand meme quelques années, qu'il ne faut plus utiliser de fichier ini (mais on peut encore les utiliser en utilisant les API mais c'est déconseillé).

    c'est effectivement un bête fichier XML mais qui a une structure et surtout le XML est LE format qu'il faut utiliser.

    ensuite, un simple "encrypt app.config" sur google devrait te donner le code necessaire pour crypter et decrypter le fichier. c'est juste, pas automatique
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Pour encrypter, jette un oeil à MD5 et SHA1 dans le framework

  7. #7
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par zoubidaman Voir le message
    Pour encrypter, jette un oeil à MD5 et SHA1 dans le framework
    mais non, là tu te méprends totalement

    ce sont des algos de hash, rien à voir avec de l'encryption. le hash n'est pas decryptable, uniquement par brute forte sur des tables rainbow. là il veut crypter un fichier de config et donc le decrypter. JAMAIS MD5 ou SHA1 ne pourront marcher.
    c'est des algos comme Rinjdael qu'il faut utiliser. (prononcez Rinedeul)
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Merci, je vien d'arriver à mon poste de travail, je vous tien au courant si j'ai un problème
    Pour encrypter, jette un oeil à MD5 et SHA1 dans le framework
    A oui, habituellement j'utilise le MD5 mais le probleme c'est bien de pouvoir déchiffrer l'info après

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    mais non, là tu te méprends totalement

    ce sont des algos de hash, rien à voir avec de l'encryption. le hash n'est pas decryptable, uniquement par brute forte sur des tables rainbow. là il veut crypter un fichier de config et donc le decrypter. JAMAIS MD5 ou SHA1 ne pourront marcher.
    c'est des algos comme Rinjdael qu'il faut utiliser. (prononcez Rinedeul)
    Oh oui, au temps pour moi. Mea Culpa

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Si tu utilisais les serialization?
    Tu fais de ton mot de passe un objet que tu serialises.
    Une fois l'objet serialisé il est crypté et tu le récupère sans problème.

  11. #11
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par NejNej Voir le message
    Si tu utilisais les serialization?
    Tu fais de ton mot de passe un objet que tu serialises.
    Une fois l'objet serialisé il est crypté et tu le récupère sans problème.
    tu pourrais détailler?
    je vois pas le rapport entre serializer et désérializer. on s'en sert pour transferer des données entre applis et c'est donc désérializable par l'autre application sans aucune clé ou autre.
    donc je suis perplexe sur ta solution mais j'aimerai bien en savoir plus, j'ai p-e manqué quelque chose
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Salut !

    J'avais fait une petite classe chargée de crypter et décrypter une chaîne, pour un prog. Ca crypte en Triple DES, ce qui devrait être suffisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
            /// <summary>
            /// Crypte en utilisant le système triple DES.
            /// </summary>
            /// <param name="input">La chaîne à crypter</param>
            /// <param name="key">La clé de cryptage</param>
            /// <returns>La chaîne cryptée</returns>
            public static string Encrypt(string input, string key)
            {
                byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input);
                TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
                tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
                tripleDES.Mode = CipherMode.ECB;
                tripleDES.Padding = PaddingMode.PKCS7;
                ICryptoTransform cTransform = tripleDES.CreateEncryptor();
                byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
                tripleDES.Clear();
                return Convert.ToBase64String(resultArray, 0, resultArray.Length);
            }
     
            /// <summary>
            /// Décrypte une chaine cryptée avec la méthode triple DES.
            /// </summary>
            /// <param name="input">La chaîne à décrypter</param>
            /// <param name="key">La clé de cryptage</param>
            /// <returns>La chaîne décryptée</returns>
            public static string Decrypt(string input, string key)
            {
                byte[] inputArray = Convert.FromBase64String(input);
                TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
                tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
                tripleDES.Mode = CipherMode.ECB;
                tripleDES.Padding = PaddingMode.PKCS7;
                ICryptoTransform cTransform = tripleDES.CreateDecryptor();
                byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
                tripleDES.Clear();
                return UTF8Encoding.UTF8.GetString(resultArray);
            }
    Par contre, la clé utilisée pour crypter doit contenir exactement 24 caractères alphanumériques.

    Voilà voilà ! J'espère t'avoir été utile !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    on s'en sert pour transferer des données entre applis et c'est donc désérializable par l'autre application sans aucune clé ou autre.
    Ah tiens : "On m'aurait menti?!" Richard V.

    Mais je te crois, je ne savais pas cela lorsque l'on me l'a montré on ne m'a pas dit ça.
    Tu sembles plus calé, donc oublions mon idée.

    Mais je vais de ce pas me renseigner et faire des test.

    Il me semblait qu'une classe serialisée comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BinaryFormatter formatter = new BinaryFormatter();
                    FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
                    formatter.Serialize(fs, _theObject);
                    fs.Close();
    n'était récupérable que par cette même classe.

  14. #14
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    "on" t'a menti

    tu écris simplement la valeur "mémoire" de l'objet sous forme binaire, tout comme tu aurais pu prendre un XmlSerializer. c'est absolument pas plus sécurisé qu'un fichier texte.
    la SEULE contrainte, c'est qu'il faut connaitre la classe de l'objet, pour pouvoir deserialiser et instancier un objet avec les valeurs récupérées. Mais avec un coup de reflector et pouf, t'as le code source. donc non, pas sécure du tout
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Whaw merci tout le monde
    Je vais tester tout sa (le code de @narchist first, il m'a l'air bien) des que j'en ai fini avec mon fichier XML.

    Petite précision: je code avec l'IDE que l'on m'a mis a disposition cad Visual Studio .NET 2002 (je sais c'est cruel ) et il ne comprend plus grand chose au C# actuelle...

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    "on" t'a menti

    tu écris simplement la valeur "mémoire" de l'objet sous forme binaire, tout comme tu aurais pu prendre un XmlSerializer. c'est absolument pas plus sécurisé qu'un fichier texte.
    la SEULE contrainte, c'est qu'il faut connaitre la classe de l'objet, pour pouvoir deserialiser et instancier un objet avec les valeurs récupérées. Mais avec un coup de reflector et pouf, t'as le code source. donc non, pas sécure du tout
    Ok merci pour l'explication.

    Et merci John pour ton thread il m'a apprit des trucs

  17. #17
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Yeah, je vien de faire un Encrypt avec ton code @narchist la chaîne ressemble à plus rien c'est que sa a du fonctionner , allez plus que le Decrypt et je suis fixé.

    Edit : le Decrypt fonctionne aussi miracle enfin tranquille avec ça merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] cryptage / chiffrer / dechiffrer / cipher
    Par alamido505945 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/06/2014, 14h25
  2. [Toutes versions] mails chiffrer et dechiffrer
    Par absolomfr2207 dans le forum Outlook
    Réponses: 0
    Dernier message: 03/01/2014, 14h22
  3. cacher ou chiffrer le password
    Par www.rubis dans le forum Langage
    Réponses: 6
    Dernier message: 08/02/2011, 15h54
  4. Réponses: 14
    Dernier message: 01/09/2003, 15h54
  5. Password root perdu !!
    Par Va(l)ve dans le forum Administration système
    Réponses: 8
    Dernier message: 18/08/2003, 22h24

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