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. #81
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    je cherche � compresser puis � crypter

  2. #82
    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 cr�e une form1 avec des bouttons(crypter, decrypter, compresser, decompresser), et chaque bouton et associ� � une fonction
    pour crypter et decrypter ca marche bien
    mais pour compresser/compresser ca marche pas

  3. #83
    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 passer par des fichiers temporaires ou pas ?
    le but c'est de permettre de crypter et compresser en une fois ?

  4. #84
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    le but c'est cr�er une application qui compresse/decompresse des fichiers, crypte/decrypte des fichiers
    donc ces deux fonctions ne sont pas li�es forc�ment

    pour l'instant le cryptage/decryptage ca marche !
    pour la compression /decompression non

  5. #85
    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
    l'exemple de la FAQ C++/CLI fonctionne tr�s bien, comme le prouve ce code fait de copier-coller :
    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
    using namespace System;
    using namespace System::IO;
    using namespace System::IO::Compression;
     
    bool compresserFichier(String ^cheminSource, String ^cheminDestination)
    {
        try
        {
            // Le fichier est placé dans le FileStream
            FileStream ^ monFileStream = gcnew FileStream(cheminSource, FileMode::Open);
            cli::array<unsigned char,1> ^ monBuffer = gcnew cli::array<unsigned char>(safe_cast<int>(monFileStream->Length));
            // Lecture de l'intégralité du FileStream
            monFileStream->Read(monBuffer, 0, safe_cast<int>(monFileStream->Length));
            // Fermeture du FileStream
            monFileStream->Close();
            // Création du fichier qui va contenir le fichier compressé
            monFileStream = gcnew FileStream(cheminDestination, FileMode::Create);
            // Compression des données
            GZipStream ^monGZipStream = gcnew GZipStream(monFileStream, CompressionMode::Compress, false);
            // Ecriture des données compressées dans le fichier de destination
            monGZipStream->Write(monBuffer, 0, monBuffer->Length);
            // Fermeture du GZipStream
            monGZipStream->Close();
            return true;
        }
        catch(Exception ^e)
        {
            Console::WriteLine(e->Message);
            return false;
        }
    }				
     
    bool decompression(String ^cheminSource, String ^ cheminDestination)
    {
        /*cheminSource : chemin complet du fichier compressé
        cheminDestination : chemin complet du fichier où le fichier doit être décompressé*/
        try
        {
            // Lecture du fichier compresse
            FileStream ^monFileStream = gcnew FileStream(cheminSource, FileMode::Open);
            // Données du fichier placées dans un GZipStream
            GZipStream ^monGzipStream = gcnew GZipStream(monFileStream, CompressionMode::Decompress);
            // Tableau qui va contenir la taille du fichier
            array <unsigned char> ^tailleOctets = gcnew array<unsigned char>(4);
            // Positionnement dans le Stream pour récupérer la taille
            int position = safe_cast<int>(monFileStream->Length) - 4;
            monFileStream->Position = position;
            // Récupération de la taille du fichier
            monFileStream->Read(tailleOctets, 0, 4);
            // Repositionnement en début du Stream
            monFileStream->Position = 0;
            // Conversion de la taille du fichier en entier
            int tailleFichier = BitConverter::ToInt32(tailleOctets, 0);
            // Dimesionnement du buffer
            array<unsigned char> ^buffer = gcnew array<unsigned char>(tailleFichier + 100);
            // Offset qui permettra de se repérer dans le Stream
            int monOffset = 0;
     
            while (true)
            {
                // Les données sont décompressées et placées dans le buffer
                int decompressionOctets = monGzipStream->Read(buffer, monOffset, 100);
                // Tant qu'il reste des données on continue
                if (!decompressionOctets)
                    break;
                //  On icrémente l'offset pour ne pas repartir de 0 à chaque fois...
                monOffset += decompressionOctets;
             }
     
            // Création du fichier décompressé
            monFileStream = gcnew FileStream(cheminDestination, FileMode::Create);
            // Ecriture des données décomrpessées dans le fichier
            monFileStream->Write(buffer, 0, tailleFichier - 1);
            // Efface les données en mémoire tampon
            monFileStream->Flush();
            // Fermeture des Streams
            monFileStream->Close();
            monGzipStream->Close();
            return true;
        }
        catch(Exception ^e)
        {
            Console::WriteLine(e->Message);
            return false;
        }
    }		
     
     
    int main(array<System::String ^> ^args)
    {
    	if (!compresserFichier("c:\\test.txt", "c:\\test.gzip"))
    		Console::WriteLine("erreur de compression");
    	if (!decompression("c:\\test.gzip", "c:\\test2.txt"))
    		Console::WriteLine("erreur de décompression");
        return 0;
    }

  6. #86
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    est ce que tu peux m'expliquer ce qui ce passe dans le main ?
    par exemple cette partie du code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     if (!compresserFichier("c:\\test.txt", "c:\\test.gzip"))
    		Console::WriteLine("erreur de compression");
    merci

  7. #87
    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
    j'appelle la fonction compresserFichier qui prend en param�tres 2 chaines, ces chaines repr�sentant le fichier � compresser et le nom du fichier r�sultat compresser.
    Si la fonction renvoi false, alors j'affiche une erreur

  8. #88
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    c'es parce que j'avais fait le m�me code sauf que dans le main j'avais mis juste ca
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    compresserFichier("c:\\test.txt", "c:\\test.gzip");
    � la place de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    if (!("c:\\test.txt", "c:\\test.gzip"))
    Console::WriteLine("failure in compression");
    et ca marchait pas !
    par contre j'ai essay� ton dernier code ..ca marche !

    merci

  9. #89
    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 une autre question
    j'ai besoin d'un algorithme de cl� publique(par exemple RSA ) pour g�n�rer des cl�s.
    j'ai essay� de voir l'aide (msdn).. mais je suis vraiment perdu
    est ce que t as un exemple d'utilisation de cette classe RSA ?
    merci

  10. #90
    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
    c'est pas si compliqu� que ca ...
    le seul truc un peu d�licat, c'est la g�n�ration des cl�s publiques et priv�es, si tu as besoin de les sauver

  11. #91
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    ben justement c'est la g�n�ration des cl�s que je cherche ?

  12. #92
    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 peux t'inspirer de ce qui a �t� fait ici http://www.codeproject.com/dotnet/RSACryptoPad.asp

  13. #93
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    ok ..merci
    j'ai une autre question :
    je veux d�finir des groups d'utilisateurs , par exemple que je d�finis 3 groupes:
    -groupe1(niveau elev�)
    -groupe2(niveau moyen)
    -groupe3(niveau inf�rieur)

    par exemple si un fichier est crypter par un membre du groupe3 , tout le monde peut le d�crypter, un fichier crypt� par un membre du groupe 2 , de peut �tre decrypt� que par un membre du groupe 2 ou du groupe 3

    est ce que t'a une id�e comment je pourrais faire ca ?
    autre chose pour par exemple ne donner que le droit de lecture (read only) ou le droit de la lecture et l'ecriture � l'utilisateur ?

    est ce que tu as une id�e comment on pourrait faire cela?

    merci

  14. #94
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    J'ai pens� � cr�er une BDD avec 2 tables :
    -l'une avec le nom et le password
    -l'autre avec le niveau de s�curit�
    et en fonction du niveau de s�curit� de chaque utilisateur je pourrais lui attribuer les permissions voulues

    est ce que tu as une id�e comment je pourrais faire cela ?

    merci

  15. #95
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut RSA/Rijndael
    voila je suis un peu perdu l�.
    pour Rijndael, une cl� suffit pour � la fois crypter et decrypter.
    Par contre pour RSA il faut tjrs g�n�rer � chaque fois une paire de cl�s(une priv�e et l'autre publique).
    voila j'ai vu le code que tu m'a donn� :

    http://www.codeproject.com/dotnet/RSACryptoPad.asp

    le problem c'est qu'il n y a que deux fonctions, une qui encrypte et l'autre qui decrypte
    je comprend pas o� est ce que la paire des cl�s (priv�e et publique) est g�n�r�e ??

    merci

  16. #96
    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
    dans cet exemple il te g�n�re 2 fichiers au moment du cryptage
    et tu dois en utiliser 1 pour d�crypter

  17. #97
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    j'ai pas bien compris
    est ce que tu peux me detailler un peu plus stp
    merci

  18. #98
    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

  19. #99
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    326
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par d�faut
    le principe je le connait
    par contre les fichiers qu'il genere au moment du cryptage , ca correspond � quoi?
    et comment j utilise qu'un seul au moment du decryptage??

  20. #100
    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, y a la cl� publique de la cl� priv�e

+ R�pondre � la discussion
Cette discussion est r�solue.

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