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 :

.Net 4 UnicodeEncoding et SecureString


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut .Net 4 UnicodeEncoding et SecureString
    Salut tout le monde en C#4 la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uEncoding.GetBytes(source)
    ne compile plus, getbytes ne prend qu'un type string.

    Comment je peux faire pour que cela fonctionne ?

    Voici mon code complet


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       public String CreateHash(SecureString source)
            {
                UnicodeEncoding uEncoding = new UnicodeEncoding();
                //Stocke la chaine source dans un tableau d'octet
                Byte[] octetsSource = uEncoding.GetBytes(source);
     
                SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
                //Création du Hash
                Byte[] octetsHash = sha1.ComputeHash(octetsSource);
                //Retourne une chaine encodé en base 64 qui est plus lisible
                //qu'une chaine hashée
                return Convert.ToBase64String(octetsHash);
            }

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 518
    Par défaut
    ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uEncoding.GetBytes(source.ToString())

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    ca fait pas une copie de la chaine en mémoire ça ?
    Si c est le cas ce n'est pas sécurisé ..

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 518
    Par défaut
    Je sais, d'où le .

    En 3.5, il y a les mêmes surcharges.

    Moi, je pense que SecureString n'est plus convertible en Char[].

    Pouvez-vous voir, avec le Framework 3.5, comment la conversion se fait, en débuggant en mode pas à pas.

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    En même temps, s'inquiéter de la sécurité d'une chaine de caractère en voyant la ligne :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    Byte[] octetsSource = uEncoding.GetBytes(source);
    c'est ... inquiétant ...

    à supposé que uEncoding.GetBytes(source) fonctionne, à votre avis à ce moment là il y aura quoi dans octetsSource ? une chaine unicode en clair ...

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 518
    Par défaut
    "octetsSource" serait une liste de byte en mémoire qui pourra être effacé soit par la méthode Dispose soit par le GarbageCollector, donc plus ou moins transitoirement.

    Si c'était une string, elle serait stocké dans le pool de string de l'AppDomain ou du Runtime .NET, donc beaucoup beaucoup plus longtemps.

    Sécurité + String =

    D'où les SecureString.

Discussions similaires

  1. [Débat] Technologie .NET vs JAVA
    Par neo.51 dans le forum Débats sur le développement - Le Best Of
    Réponses: 1047
    Dernier message: 14/01/2019, 16h15
  2. A ceux qui ont migré de VB6 vers VB.Net
    Par Fox dans le forum VB 6 et antérieur
    Réponses: 81
    Dernier message: 21/05/2008, 14h56
  3. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  4. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 09h45

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