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