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

VC++ .NET Discussion :

securité sous visual c++


Sujet :

VC++ .NET

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut securité sous visual c++
    je travaille sous visual studio 2005 et comme language visual c++
    je veux créer un application qui sécurise des fichiers

    donc j ai commencé par ajouté dans le menu un boutton" protect" et ce que je veux une fois je clik dessus, il m affiche une boite de dialog pour entrer un login et un pass puis en fonction de ca voir s il peut rendre le fichier protégé

    est ce que quelqu un peux m aider?
    est ce qu il ya des classes déja existentes qui font ceci ? si oui comment ?

    merci

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu veux crypter le fichier ? en fonction d'une phrase ?
    le framework.net permet cela assez facilement, peux-tu l'utiliser ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut débutant!
    comment pourrais je le crypter .. peux tu detailler un peu plus

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    est-ce que tu veux utiliser le framework.net ou pas ? ca simplifierai les choses

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    dis moi comment ?

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    oui je veux utiliser si c plus simple !

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tiens, je viens de créer cet exemple

    tu crées un nouveau projet CLR (console dans mon cas)

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    using namespace System;
    using namespace System::Text;
    using namespace System::Security::Cryptography;
    using namespace System::IO;
     
     
    void GenerateKey(String ^SecretPhrase, array<unsigned char> ^&Key, array<unsigned char> ^&IV)
    {
    	array<unsigned char> ^bytePhrase = Encoding::ASCII->GetBytes(SecretPhrase);
    	SHA384Managed ^sha384 = gcnew SHA384Managed();
    	sha384->ComputeHash(bytePhrase);
    	array<unsigned char> ^result = sha384->Hash;
    	for (int loop = 0; loop < 24; loop++)
    		Key[loop] = result[loop];
    	for (int loop = 24; loop < 40; loop++)
    		IV[loop - 24] = result[loop];
    }
     
    String ^ Crypter(String ^original, String ^keyPhrase)
    {
        array<unsigned char> ^Key = gcnew array<unsigned char>(24);
        array<unsigned char> ^IV = gcnew array<unsigned char>(16);
     
        GenerateKey(keyPhrase, Key, IV);
     
        ASCIIEncoding ^textConverter = gcnew ASCIIEncoding();
        RijndaelManaged ^myRijndael = gcnew RijndaelManaged();
        array<unsigned char> ^encrypted;
        array<unsigned char> ^toEncrypt;
     
        myRijndael->Key = Key;
        myRijndael->IV = IV;
     
        ICryptoTransform ^encryptor = myRijndael->CreateEncryptor(Key, IV);
        MemoryStream ^msEncrypt = gcnew MemoryStream();
    	CryptoStream ^csEncrypt = gcnew CryptoStream(msEncrypt, encryptor, CryptoStreamMode::Write);
     
        toEncrypt = textConverter->GetBytes(original);
     
        csEncrypt->Write(toEncrypt, 0, toEncrypt->Length);
        csEncrypt->FlushFinalBlock();
     
        encrypted = msEncrypt->ToArray();
    	return Convert::ToBase64String(encrypted);
    }
     
    String ^ Decrypter(String ^ encryptedString, String ^keyPhrase)
    {
        array<unsigned char> ^Key = gcnew array<unsigned char>(24);
        array<unsigned char> ^IV = gcnew array<unsigned char>(16);
        GenerateKey(keyPhrase, Key, IV);
     
    	array<unsigned char> ^encrypted = Convert::FromBase64String(encryptedString);
        array<unsigned char> ^fromEncrypt;
        RijndaelManaged ^myRijndael = gcnew RijndaelManaged();
        ASCIIEncoding ^textConverter = gcnew ASCIIEncoding();
     
        myRijndael->Key = Key;
        myRijndael->IV = IV;
     
        ICryptoTransform ^decryptor = myRijndael->CreateDecryptor(Key, IV);
        MemoryStream ^msDecrypt = gcnew MemoryStream(encrypted);
    	CryptoStream ^csDecrypt = gcnew CryptoStream(msDecrypt, decryptor, CryptoStreamMode::Read);
        fromEncrypt = gcnew array<unsigned char>(encrypted->Length);
     
        csDecrypt->Read(fromEncrypt, 0, fromEncrypt->Length);
     
        return textConverter->GetString(fromEncrypt);
    }
     
     
    int main(array<System::String ^> ^args)
    {
    	StreamReader ^sr = gcnew StreamReader("c:\\test.txt");
    	StreamWriter ^sw = gcnew StreamWriter("c:\\testCrypt.txt");
    	try
    	{
    		sw->Write(Crypter(sr->ReadToEnd(), "code secret"));
    	}
    	catch (Exception^)
    	{
    	}
    	finally
    	{
    		sr->Close();
    		sw->Close();
    	}
    	sr = gcnew StreamReader("c:\\testCrypt.txt");
    	sw = gcnew StreamWriter("c:\\testDeCrypt.txt");
    	try
    	{
    		sw->Write(Decrypter(sr->ReadToEnd(), "code secret"));
    	}
    	catch (Exception^)
    	{
    	}
    	finally
    	{
    		sr->Close();
    		sw->Close();
    	}
        return 0;
    }
    ca prend le fichier test.txt pour le crypter en testCrypt.txt et le décrypter en testDeCrypt.txt, grace à l'algo de Rijndael, et avec une phrase clé

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    en fait c possible d'utiliser un algorithme à clé publique, par exemple RSA??

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    merci bien ..
    en fait j'ai une autre question ..
    voila , je veux qu'une fois je clik sur un sous menu "Protect"(que j'ai ajouté ) une boite de dialogue apparait ou on peut choisir l emplacement du fichier, comme les boites standards de windows (comme lorsqu'on fait ouvrir)

    une fois ce fichier choisi, le fichier serait crypté

    donc ma question est comment créer une telle boites de dialogue ?
    et je pense après j'adaptrais le code que tu m a donné en remplacant le fichier.txt par le fichier que normalemt sera choisi par la boite de dialogue ..

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    rsa c'est possible aussi, le framework.net le permet

    pour commencer à faire une application, tu peux jeter un oeil ici http://nico-pyright.developpez.com/t...2005/winforms/

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    En fait en utilisant ce code pour crypter que tu m a donné , je peux pas créer une méthode avec comme paramètres (le fichier, le password)

    par exemple : chiffre(le fichier, le password)

    comme ca à chaque fois que je veux crypter j 'associe le clik du bouton À chiffre(le fichier, le password)??

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    En fait ce que je veux faire c'est que une fois je clik sur Chiffrer(le sous menu que je vais ajouter) une boite de dialogue s'affiche pour choisir l'emplacement du fichier que je veux chiffrer, comment je pourrais créer une telle boite de dialogue ??
    donc dans le code que tu m a donné par exemple je changerais le fichier .txt par le fichier qui sera saisi dans la boite de dialogue

    et s'il y a moyen aussi de choisir ou placer le fichier crypter ca serais bien ?

  13. #13
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    cette boite de dialogue pourra prendre en compte les extentions .enc pour les fichiers cryptés et .dec pour les fichiers decryptés par exemple

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ben c'est pas compliqué à faire, tu bloques sur quoi ?

  15. #15
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    je veux qu une fois je clik sur le bouton "crypt" il m affiche une boite dialogue pour choisir le fichier, ca je sais pas faire

    et une fois le fichier choisi cad je clik sur ok il me crypt le fichier

    et pour decrypter la meme chose

  16. #16
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Citation Envoyé par nico-pyright(c)
    rsa c'est possible aussi, le framework.net le permet

    pour commencer à faire une application, tu peux jeter un oeil ici http://nico-pyright.developpez.com/t...2005/winforms/
    tu t'inspires de ca
    tu crées une nouvelle form
    tu l'instancies
    tu l'affiches

  17. #17
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    mais j arrive à créer la boite de dialogue standard de windows lorsque on fait fichier-
    |ouvrir

    c la ou je bloque

    il ya pas de boite de dialogue ou des menus prédefinis comme pour les mfc?

  18. #18
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu parles des boites de dialogue standard ? voir ici http://nico-pyright.developpez.com/t...rms2/#Ldialogs

  19. #19
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    j ai vu cette partie consacrée aux boites standards:

    *****************************************
    Les contrôles OpenFileDialog et SaveFileDialog fonctionnent grosso-modo de la même façon. Ils permettent respectivement l'ouverture d'un boite de dialogue pour effectuer la lecture ou l'écriture d'un fichier.
    On peut bien sur définir une extension par défaut avec la propriété DefaultExt ainsi qu'un filtre sur une ou plusieurs extensions avec la propriété Filter.
    Il existe aussi quelques propriétés intéressante qui permette l'apparition d'un warning si par exemple le fichier ou le répertoire n'existe pas, avec CheckFileExists ou CheckPathExists. On peut aussi autoriser la sélection multiple avec Multiselect.
    openFileDialog1->Title = "Sélectionnez un fichier";
    openFileDialog1->FileName = nullptr;
    openFileDialog1->DefaultExt = "txt";
    openFileDialog1->Filter = "Fichiers Texte (*.txt)|*.txt|Tous (*.*)|*.*";
    openFileDialog1->CheckFileExists = true;
    if (openFileDialog1->ShowDialog() == System::Windows::Forms:ialogResult::OK)
    {
    Stream ^s = openFileDialog1->OpenFile();
    // ...
    }

    *************************************************

    En fait je veux associer un clique sur un bouton( un evenement) à l ouverture de la boite de dialogue standard d'ouverture

    alors comment je fais ??

  20. #20
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    En fait j'ai associé un evenement au code suivant :

    Cdialog *a = new Cdialog;
    a->DoModal();

    quand je compile , il m affiche une fenetre

    **************************
    Debug Assertion Failed!

    Program:...
    File: dbgheap.c
    Line: 1414
    Expression: _CrtIsValidHeapPointer(pUserData)


    abondonner recommencer ignorer
    **********************************

    est ce que tu sais ca veux dire koi ca ??

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 6 12345 ... DernièreDernière

Discussions similaires

  1. [MSChart] creation de courbe sous visual C++
    Par gabriel knight dans le forum MFC
    Réponses: 5
    Dernier message: 18/09/2006, 14h32
  2. Impression sous visual c++
    Par zeze511 dans le forum MFC
    Réponses: 2
    Dernier message: 16/02/2004, 12h02
  3. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  4. Réponses: 3
    Dernier message: 28/01/2004, 10h46
  5. Deplacer un curseur dans un RichEdit sous visual c
    Par tweek dans le forum Windows
    Réponses: 7
    Dernier message: 14/01/2004, 00h29

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