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 :

[C# 2.0] Problème de décryptage SecureString


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Khrysby
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Par défaut [C# 2.0] Problème de décryptage SecureString
    Bonjour, J'essai de décrypter un code crypter avec SecureString.
    Voilà comment je fais pour crypter ma chaine :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SecureString sString = new SecureString();
     
    foreach (char unChar in password) {
         sString.AppendChar(unChar);
    }
    sString.Clear();
    IntPtr pointer = Marshal.SecureStringToBSTR(sString);
    return pointer.ToString();

    le code est inscrit dans un fichier xml.

    Maintenant, prend ce code et je veux le décrypter. Pour l'instant, voilà où j'en suis :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IntPtr pointer = new IntPtr(password);
    String passwordDecrypt = Marshal.PtrToStringUni(pointer);
     
    return passwordDecrypt;
    Le problème c'est que passwordDecrypt est = à vide ou à des caractère bizard... Quelqu'un peut m'aider svp ?

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de Khrysby
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Par défaut
    Personne ne peut me dire ? Car vraiment, je n'ai pas trouvé et c'est un peu bloquand.

  3. #3
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    Je croix que le probleme est dans :
    il vide la chaine sString, tu doit la remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sString.MakeReadOnly();
    Pour la mettre en lecture seule.

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Pourquoi tu veux decrypter le SecureString ???

  5. #5
    Membre éclairé Avatar de Khrysby
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Par défaut
    Pour pouvoir comparrer de mot de passe. (Celui qui se trouve dans mon fichier XML et clui que l'utilsateur tape). Je sais que normalement, les mot de passe ne se décrypte pas. Mais quand je crypte le mot de passe que l'utilsateur entre pour comparer avec celui qui se trouve dans mon fichier xml, ce n'est pas le même. Il existe surement un méthode qui permet de comparer les 2 chaines crypter mais je ne sias pas la quel... quelqu'un peut me dire quelle est cette méthode ?

    Merci.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Par défaut
    Sur ce blog : http://community.bartdesmet.net/blog...0/20/4589.aspx il y a un bout de code qui montre comment comparer 2 SecureString. Voici le code :
    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
    unsafe static bool Match(SecureString s1, SecureString s2)
            {
                if (s1.Length != s2.Length)
                    return false;
     
                IntPtr bs1 = Marshal.SecureStringToBSTR(s1);
                IntPtr bs2 = Marshal.SecureStringToBSTR(s2);
                char* ps1 = (char*) bs1.ToPointer();
                char* ps2 = (char*) bs2.ToPointer();
     
                try
                {
                    for (int i = 0; i < s1.Length; i++)
                        if (ps1[i] != ps2[i])
                            return false;
                    return true;
                }
                finally
                {
                    if (IntPtr.Zero != bs1)
                        Marshal.ZeroFreeBSTR(bs1);
                    if (IntPtr.Zero != bs2)
                        Marshal.ZeroFreeBSTR(bs2);
                }
            }
    Sinon ton code pour récuperer la string coorespondant a la securestring a l'air correct mais comme dit ci-dessus si tu fait un Clear() de ta chaine avant de la lire tu n'iras pas loin...

    Au passage, il y a un autre article sympa qui parle de SecureString ici http://community.bartdesmet.net/blog...3/31/3851.aspx

  7. #7
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par Khrysby
    Pour pouvoir comparrer de mot de passe. (Celui qui se trouve dans mon fichier XML et clui que l'utilsateur tape).
    , ca me rappelle une discussion : [C# 2.0] Comment crypter une chaine ?. Justement je reprends quelque points :

    Citation Envoyé par Khrysby
    J'ais utilisé SecureString. C'est assez simple d'utilisation et ça a l'aire assez complet. Pour l'instant, je vais l'utiliser
    Je t'ai répondu :

    Citation Envoyé par mehdi_tn
    Désolé de vous conte dire mais SecureString est utilisé pour crypter des données en mémoire et non pas pour les stoquer dans des fichiers.
    Et je t'ai proposé :

    Citation Envoyé par mehdi_tn
    * Utilisation des clés symetriques avec le namespace System.Security.Cryptography.SymmetricAlgorithm
    * Utilisation des clés asymetriques avec le namespace System.Security.Cryptography.AsymmetricAlgorithm
    * Utilisation des algorithmes de Hashage avec le namespace System.Security.Cryptography.HashAlgorithm.
    SecureString n'est pas fait pour être decrypté, elle permet juste de crypter les données en mémoire. Si c'était interessant de le faire alors MS aurait proposer une méthode du genre getClearString(); pour avoir les données originales.

    PS: il existe surement un moyen de la decrypter

Discussions similaires

  1. Probl avec décimales s/ base Access et D7
    Par bzh56 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/07/2005, 12h36
  2. Proble avec un vhosts sous Apache (Mandrake 10.1)
    Par __fabrice dans le forum Apache
    Réponses: 2
    Dernier message: 27/05/2005, 13h11
  3. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 13h58
  4. Proble capture direct Show
    Par liliemumue dans le forum DirectX
    Réponses: 3
    Dernier message: 13/12/2004, 21h04
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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