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 :

Cryptage AES, gestion de la clé et du IV [Débutant]


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Cryptage AES, gestion de la clé et du IV
    Bonjour à tous,

    Je suis entrain de coder une app qui envoi des fichiers sur un serveur FTP. Cette partie est faite, mais pas la suite.

    Pour se connecter au serveur, je souhaite créer une fenêtre de préférences où l'utilisateur rentrera toutes les données du serveur, dont le mot de passe. J'ai pensé à stocker ces données dans un fichier config. Pour cela, il me faut donc crypter le mot de passe. Je me suis donc renseigné sur le cryptage AES. J'ai à peu près compris la démarche en suivant ce tuto.

    Ainsi j'obtiendrai deux fonctions : Crypt(String, Key, IV) et Decrypt(String, Key, IV).
    La question que je me pose, c'est que faire de la clé et du vecteur d’initialisation ? J'ai lu à plusieurs reprises sur le net que les apps en C# étaient décompilables. Je ne peux donc pas les stocker en dur dans le code, ni dans un fichier. Le cryptage ne servirait à rien... D'après ce que j'ai lu, une des méthode serrait de demander un mot de passe à l'utilisateur (haché en SHA1) afin de décrypter la clé cryptée. Mais je ne souhaite rien demander à l'utilisateur ! N'y a t'il pas un moyen ?

    Qu'en pensez vous ? AES n'est peut être pas non plus la meilleure solution.

    Merci d'avance.

  2. #2
    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
    Il y a une solution beaucoup plus simple : utiliser la Data Protection API de Windows, via la classe ProtectedData. C'est Windows qui gère les clés automatiquement, soit par machine, soit par utilisateur, selon l'option que tu choisis. Si tu choisis le cryptage par utilisateur, seul l'utilisateur qui a crypté les données pourra les décrypter.

    ça donne un code dans ce style :

    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
    using System.Security.Cryptography;
     
    ...
     
    static string ProtectPassword(string clearPassword)
    {
        byte[] bytes = Encoding.UTF8.GetBytes(clearPassword);
        byte[] protectedBytes = ProtectedData.Protect(bytes, null, DataProtectionScope.CurrentUser);
        return Convert.ToBase64String(protectedBytes);
    }
     
    static string UnprotectPassword(string protectedPassword)
    {
        byte[] protectedBytes = Convert.FromBase64String(protectedPassword);
        byte[] bytes = ProtectedData.Unprotect(protectedBytes, null, DataProtectionScope.CurrentUser);
        return Encoding.UTF8.GetString(bytes);
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    C'est encore mieux que ce que je cherchais. Merci infiniment, je vais potasser ça cette semaine. Tu me tire une belle épine du code.

    Edit : c'est tellement simple que cela ne m'a pris que quelques minutes pour l'implémenter. Cela marche à merveille. Cependant, j'ai du ajouter une référence à System.Security (Click droit sur les références > ajouter).

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

Discussions similaires

  1. Cryptage AES clé 256bits
    Par marion782 dans le forum Sécurité
    Réponses: 15
    Dernier message: 16/07/2013, 16h52
  2. Cryptage AES (alias Rijndael)
    Par teol91 dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2011, 09h53
  3. [Débutant] cryptage AES avec fichier .hex
    Par sniper59 dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/06/2011, 13h35
  4. code cryptage AES
    Par youp_db dans le forum Windows
    Réponses: 2
    Dernier message: 04/03/2008, 09h10
  5. Bibliothèque zip avec cryptage AES
    Par guilig dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 01/02/2007, 18h30

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