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

C Discussion :

Problème RSA Fichier


Sujet :

C

  1. #1
    xyz
    xyz est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 39
    Par défaut Problème RSA Fichier
    Bonjour,

    Pour résumer, je cherche à crypter des fichiers txt avec RSA.

    Ce que je cherche à faire (et ce qu'il faut faire dans la théorie selon moi), c'est ouvrir le log en lecture, puis segmenter les données en paquets pour les crypter "à la volée", et ensuite les rediriger dans un nouveau fichier.

    Cependant j'ai des difficultés à coder cette partie.

    J'ouvre mon fichier de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FILE * ouverture;
     
        if(ouverture = fopen(path, "r") == -1)
    	perror("Fichier de log introuvable\n");
    Un autre en écriture...

    Mais j'ai du mal à voir quoi mettre dans ma boucle.

    J'utilise la librarie GMP et Ubuntu.

    Merci de m'éclairer si possible.

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Salut,

    GMP est une super lib pour le chiffrement c'est énorme

    alors déja tu peux déclarer des GRANDS ENTIERS/NOMBRES :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mpz_t message;
    mpz_t modulo;
    mpz_t exposant;
    mpz_t resultat;
    Ensuite tu initialise tes trois nombres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //fonction(nom_var,"string de chiffres",base);
    //il me semble que 0x10001 est l'exposant le plus utilisé :s à vérifier
    mpz_init_set_str (exposant,"65537",10);
    //etc... y'a pas seulement mpz_init_set_str y'en a plein d'autre.
    et ensuite tu peut faire ton opération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //init du resultat
    mpz_init(resultat);
     
    mpz_powm(resultat,message,exposant,modulo);
    Pour tester tu peut déjà voir cela :

    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
     printf("\tFonction RSA\n\n");
        //pour tester la fonction
        char *mess;
        mess=(char*) calloc(4,sizeof(char));
        strcpy(mess,"1999");
        char *cle;
        cle=(char*) calloc(4,sizeof(char));
        strcpy(cle,"1999");
        char *mod;
        mod=(char*) calloc(4,sizeof(char));
        strcpy(mod,"100");
     
        //declare un grand nombre pour récupérer notre message
        mpz_t message;
        //convertie le string en grand nombre
        //ici on a mis en base 10 mais cela dépend bien sur de ce que l'on aura en entrer
        mpz_init_set_str (message,mess,10);
       //vérification
        gmp_printf("message =%Zd\n",message);
     
        //declare un grand nombre pour récupérer notre clé
        mpz_t key;
        //convertie le string en grand nombre
        mpz_init_set_str (key,cle,10);
        //vérification
        gmp_printf("keypriv =%Zd\n",key);
     
        //declare un grand nombre pour récupérer notre modulo
        mpz_t modulo; 
        //convertie le string en grand nombre
        mpz_init_set_str (modulo,mod,10);
        //vérification
        gmp_printf("modulo =%Zd\n",modulo);
     
     
        //declare notre resultat
        mpz_t resultat;mpz_init(resultat);
     
        //fonction qui combine l'exponetielle et le modulo
        //ce qui va nous permettre de faire notre chiffrement
        mpz_powm(resultat,message,key,modulo); 
     
        gmp_printf("\nResultat=>  %Zd^%Zd mod(%Zd)=%Zd\n",message,key,modulo,resultat);
     
     
        // convertie notre grand nombre en string
        char *result=NULL;
        mpz_get_str (result,2,resultat);
     
        printf("\n\tfinie\n");
    Voila j'éspère t'avoir aidé.

    Bonne chance

  3. #3
    xyz
    xyz est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 39
    Par défaut
    Merci pour ta réponse

    J'ai déjà réussi cette partie, à savoir crypté un message. De nombreuses ressources existent sur le net à propos du RSA ce qui en facilite ça compréhension.

    Mais mon souci ce situe au niveau du fichier. Je vois (enfin je crois) comment faire dans la théorie pour crypter un fichier mais j'ai du mal à voir comment l'appliquer dans la pratique.

    Merci pour votre aide.

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Beh la heu... :p

    Je pense la meilleur façon serait :

    - Ouvrir le fichier

    - Prendre un block de donnée (disons que ta clef est de 1024 bits, tu devrait prendre assez d'octet pour que NB_octet ^ exp soit supérieur a 1024 bits, qui ne devrait pas être dificile :p)

    - chiffrer les blocks suivant le mode que tu veux :
    -------------> MODE CBC (Cypher Block Chaining, ou a chaque foi tu prends le chiffré précédent et tu le concatène avec le nouveau)
    ------------->MODE EDC (me souvient plus :p)
    -------------> MODE MACHIN TRUC
    ------------->Sinon tu peut te faire ton MODE du style tu chiffre le premier block et ensuite tu remplace le modulo par le chiffré de ce block.

    - Et tu remplace les données présentes dans ton fichier par les datas chiffrées.

    Au pire au tout début du fichier tu ajoute le chiffré de l'extension du fichier comme ça tu change l'extension en .RSA (par exemple) et pour le déchiffrement tu sais que le premier block sera CYPHER(.TXT) par exemple xD

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Au passage, tu dois ouvrir tes fichiers en mode binaire, pas texte.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [Delphi 3] Problème avec fichier ressource .RES
    Par delphim dans le forum EDI
    Réponses: 2
    Dernier message: 28/06/2005, 18h11
  2. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17
  3. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36
  4. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 09h13
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

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