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 retour de valeur (Format Incorrect)


Sujet :

C

  1. #21
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Rappelle-moi ce qu'il y a de mal dans ce code, je n'ai pas manipulé de fichier avec C depuis des années

  2. #22
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Le parcours de la chaîne à chaque tour de boucle..?

  3. #23
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Ah oui ! Non mais ça c'est évident, c'était juste pour écrire plus vite le code d'essai

  4. #24
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Toi tu le sais mais pas forcément ceux qui te lisent. Je ne veux pas m'exprimer à la place de Svear mais j'imagine que c'est ce qui l'a fait tiquer. Je pense que le compilo doit remplacer ça vite fait de toute manière..

  5. #25
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Je pense que le compilo doit remplacer ça vite fait de toute manière..
    Ca ce serait intéressant à vérifier. Voire même ouvrir une discussion sur "faut-il faire confiance au compilo".

    Je me souviens quand j'ai commencé le C, on me parlait des "register" mais on me disait aussi qu'il valait mieux laisser le compilateur s'en charger. Est-ce qu'aujourd'hui cette tendance (laisser le compilo gérer) doit aussi se déporter sur les fonctions incluses dans les conditions de continuation de boucle ou bien doit-on continuer à veiller nous-mêmes à éviter les appels systématiques en utilisant une varaible intermédaiire ?

    Citation Envoyé par Bktero Voir le message
    Ah oui ! Non mais ça c'est évident, c'était juste pour écrire plus vite le code d'essai
    Ouais bien entendu je me doute que t'aurais pas fais ça en vrai. Mais bon, c'était marrant de te taquiner...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #26
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Je ne préconise pas de coder comme un rustre en se reposant sur les optimisations du compilateur. J'aurais moi-même, en production, utilisé un const size_t. Ne serait-ce que pour signifier mon intention au relecteur, pour lui différencier cette implémentation d'une autre qui eût modifié la chaîne à chaque tour de boucle, par exemple. Mais il est certain qu'un compilateur moderne ne passera jamais à côté d'une optimisation aussi triviale.

    Je laisse le soin à ceux qui en douteraient de comparer les sorties de -S et -O2 -S.

  7. #27
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2016
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Je reviens vers vous une fois de plus. Je préfère continuer la discussion sur ce post car il y a l'avancement des différents commentaires des personnes ayant répondu.

    Mon objectif final est de chiffrer un document via RSA. Pour se faire, j'ouvre mon fichier et lis le contenu du fichier (sois en binaire soit en normal je ne sais pas quel est le mieux). Je recherche à chiffrer le document cependant, il faudrait que j'arrive à séparer par bloc le contenu du fichier afin de chiffrer ces blocs et pas une valeur une par une.

    J'aimerais savoir ce que vous préconisez pour cela ? Comment stocker les valeurs du fichier (en binaire ou autre format). Et comment faire pour que ces valeurs soient stockés par bloc.

    Pour vous donner une idée, mon code est le suivant :
    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
    long RsaModule (unsigned long e, unsigned long n,int bit) {
        int EncryptedBit;
        EncryptedBit = (bit^e)%n;
        printf("%u", EncryptedBit);
     
        return EncryptedBit;
    }
     
    void EncryptFile(char * file){ 
     
        int caractere = -1;
        char *NewPathFile = "C:\\Users\\ANNUAL-PROJECT_Win7\\Desktop\\DOSSIER TEST\\Crypted.txt";
        int caracterechiffre;
        FILE *EncryptedFile = fopen(NewPathFile, "wb");
        FILE *ToEncrypt = fopen(file, "rb");
     
        while ((caractere = fgetc(ToEncrypt)) != EOF)
            printf("\nBinaire normal : %u \n", caractere);
            //Appel de ma fonction RSA_Module pour chiffrer le bloc ??
        fclose(EncryptedFile);
        fclose(ToEncrypt);
     
        // Supprime le fichier initial
        //int end = remove(NewPathFile);
    }
     
    int main() {
     
        unsigned long e = 1267;
        unsigned long d = 3;
        unsigned long n = 2101;  
     
     
     
        EncryptFile("C:\\Users\\ANNUAL-PROJECT_Win7\\Desktop\\DOSSIER TEST\\a chiffrer.txt");
     
    }

  8. #28
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dzerko Voir le message
    et lis le contenu du fichier (soit en binaire soit en normal je ne sais pas quel est le mieux).
    Rien que cette phrase montre que tu ne sais pas ce qu'est un fichier. Parce que moi, j'ai des photos sur mon ordi (des fichiers "jpg" qui sont donc des fichiers binaires) mais je les trouve parfaitement normales !!!
    Je te recommande d'aller lire ce post qui traite des fichiers binaires et des fichiers "normaux"...

    Citation Envoyé par dzerko Voir le message
    J'aimerais savoir ce que vous préconisez pour cela ? Comment stocker les valeurs du fichier (en binaire ou autre format)
    Tu mélanges tout. Le binaire n'est pas un format de stockage mais un format d'affichage. Il te sert à retranscrire une information pour qu'elle soit compréhensible par celui qui l'utilise. L'information stockée, elle, est stockée sous forme de chiffres (voire même à base de signaux électriques "présents" ou "absent")
    Prenons le nombre de doigts de tes deux mains (avec comme hypothèse que ce nombre correspond au nombre standard chez les humains). Ce nombre pourra selon les conventions être représenté comme "A" (base 11, 12, 13, ...), "12" (base 8), "22" (base 4), "20" (base 5), "14" (base 6), "101" (base 3), "1010" (base 2 ou binaire) ou "10" (base 10). Mais quelle que soit cette représentation, ce nombre lui ne change pas.
    C'est pareil pour un fichier. Quel que soit ce que tu veux stocker, au final tu n'as que de l'octet. Et cet octet soit il correspond très exactement à ce qu'il faut stocker (c'est par exemple le cas sous Unix/Linux), soit dans un certain cas très précis, il contient des caractères en plus qui (selon moi), ne servent à rien mais qui sont quand-même présents (je veux parler bien entendu du "end of line" des fichiers textes windows représenté par 2 octets là ou un seul aurait suffit ce qui, sur cet OS précis, implique alors de faire une différenciation entre "fichiers textes" et "fichiers binaires").

    Citation Envoyé par dzerko Voir le message
    Je recherche à chiffrer le document cependant, il faudrait que j'arrive à séparer par bloc le contenu du fichier afin de chiffrer ces blocs et pas une valeur une par une.
    Et comment faire pour que ces valeurs soient stockés par bloc.
    Je ne vois pas trop l'avantage. Déjà, si tu veux regrouper tes octets en "blocs" tu vas vite te retrouver face à la limitation machine.
    Prenons un fichier contenant "abcde" (il s'agit ici d'une simple représentation humaine de son contenu qui est plutôt 97, 98, 99, 100 et 101 et encore même là on doit être d'accord sur la convention de représentation de ces nombres pour que toi et moi on comprenne la même chose mais passons sur ce dernier détail car il faut bien faire l'hypothèse qu'on voit tous deux ces nombres de la même façon sinon on ne peut plus communiquer).
    Donc tu veux stocker ces 5 nombres dans un bloc. Un bloc de quoi ? Un long ? Ben désolé mais le nombre "097098099100101" est trop gros pour y tenir. Un bloc d'octets ? Ok mais alors tu chiffreras ce bloc octet par octet ce qui reviendra au même que chiffrer ton fichier octet par octet.
    Tu es donc limité à au maximum 4 octets dans ton bloc de (on va dire) un long. Mais quand tu transformeras ce long via RSA (il sera élevé à un exposant x) ben je vois mal ce qui va en rester (en fait si je vois plutôt bien car ça coupera ce qui dépasse et il restera un modulo)...

    Citation Envoyé par dzerko Voir le message
    Pour vous donner une idée, mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    long RsaModule (unsigned long e, unsigned long n,int bit) {
        int EncryptedBit;
        EncryptedBit = (bit^e)%n;
        printf("%u", EncryptedBit);
     
        return EncryptedBit;
    }
    Ta fonction est du type "long" (déjà tu l'aurais mis en "unsigned tu gagnais une puissance de 2 et ça je te l'ai déjà dit) et tu fais tes calculs sur un int. Donc en dehors de tous tes problèmes de compréhension, tu risque d'avoir aussi des problèmes de troncature de tes valeurs ou, pire, d'expansion du bit de signe...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #29
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2016
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Rien que cette phrase montre que tu ne sais pas ce qu'est un fichier. Parce que moi, j'ai des photos sur mon ordi (des fichiers "jpg" qui sont donc des fichiers binaires) mais je les trouve parfaitement normales !!!
    Je te recommande d'aller lire ce post qui traite des fichiers binaires et des fichiers "normaux"...
    Effectivement ma vision d'un fichier binaire était différente. Je te remercie pour le lien et je me suis documenter ailleurs en complément.

    Citation Envoyé par Sve@r Voir le message
    Tu mélanges tout. Le binaire n'est pas un format de stockage mais un format d'affichage. Il te sert à retranscrire une information pour qu'elle soit compréhensible par celui qui l'utilise. L'information stockée, elle, est stockée sous forme de chiffres (voire même à base de signaux électriques "présents" ou "absent")
    Prenons le nombre de doigts de tes deux mains (avec comme hypothèse que ce nombre correspond au nombre standard chez les humains). Ce nombre pourra selon les conventions être représenté comme "A" (base 11, 12, 13, ...), "12" (base 8), "22" (base 4), "20" (base 5), "14" (base 6), "101" (base 3), "1010" (base 2 ou binaire) ou "10" (base 10). Mais quelle que soit cette représentation, ce nombre lui ne change pas.
    C'est pareil pour un fichier. Quel que soit ce que tu veux stocker, au final tu n'as que de l'octet. Et cet octet soit il correspond très exactement à ce qu'il faut stocker (c'est par exemple le cas sous Unix/Linux), soit dans un certain cas très précis, il contient des caractères en plus qui (selon moi), ne servent à rien mais qui sont quand-même présents (je veux parler bien entendu du "end of line" des fichiers textes windows représenté par 2 octets là ou un seul aurait suffit ce qui, sur cet OS précis, implique alors de faire une différenciation entre "fichiers textes" et "fichiers binaires").
    Citation Envoyé par Sve@r Voir le message
    Je ne vois pas trop l'avantage. Déjà, si tu veux regrouper tes octets en "blocs" tu vas vite te retrouver face à la limitation machine.
    Prenons un fichier contenant "abcde" (il s'agit ici d'une simple représentation humaine de son contenu qui est plutôt 97, 98, 99, 100 et 101 et encore même là on doit être d'accord sur la convention de représentation de ces nombres pour que toi et moi on comprenne la même chose mais passons sur ce dernier détail car il faut bien faire l'hypothèse qu'on voit tous deux ces nombres de la même façon sinon on ne peut plus communiquer).
    Donc tu veux stocker ces 5 nombres dans un bloc. Un bloc de quoi ? Un long ? Ben désolé mais le nombre "097098099100101" est trop gros pour y tenir. Un bloc d'octets ? Ok mais alors tu chiffreras ce bloc octet par octet ce qui reviendra au même que chiffrer ton fichier octet par octet.
    Tu es donc limité à au maximum 4 octets dans ton bloc de (on va dire) un long. Mais quand tu transformeras ce long via RSA (il sera élevé à un exposant x) ben je vois mal ce qui va en rester (en fait si je vois plutôt bien car ça coupera ce qui dépasse et il restera un modulo)...
    C'est la mon problème tu me dis qu'en octets, la valeur sera trop grande et j'en suis conscient. C'est pour ça que je cherche une méthode pour chiffrer le fichier de manière correcte afin que ça ne soit pas réversible en supposant que mes clés RSA soient suffisament robuste.
    Citation Envoyé par Sve@r Voir le message
    Ta fonction est du type "long" (déjà tu l'aurais mis en "unsigned tu gagnais une puissance de 2 et ça je te l'ai déjà dit) et tu fais tes calculs sur un int. Donc en dehors de tous tes problèmes de compréhension, tu risque d'avoir aussi des problèmes de troncature de tes valeurs ou, pire, d'expansion du bit de signe...
    Pour le moment le type de ma fonction n'est vraiment pas ce qui m'interesse sachant que j'ai diminué mes valeurs RSA pour pouvoir faire tenir le tout dans un long. Je suis seulement en phase test et donc n'ai pas besoin pour le moment d'un unsigned.

  10. #30
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dzerko Voir le message
    C'est la mon problème tu me dis qu'en octets, la valeur sera trop grande et j'en suis conscient. C'est pour ça que je cherche une méthode pour chiffrer le fichier de manière correcte afin que ça ne soit pas réversible en supposant que mes clés RSA soient suffisament robuste.
    Maintenant on entre dans une nouvelle discussion; à savoir quel est ton but réel ? Veux-tu juste t'amuser à faire ton petit RSA pour le plaisir ou bien tu veux vraiment implémenter un RSA "utile" ?
    Si c'est un RSA utile je n'en vois pas moi l'utilité. Déjà il y en a un paquet déjà implémentés, en passant par PGP (et son homologue free GPG) et (à priori) je ne vois pas ce que le tien apportera. De plus, une vraie implémentation de RSA étant très longue, généralement on ne l'implémente jamais sur un fichier. On préfère chiffrer le fichier sur un algorithme symétrique (style DES) très rapide et c'est la clef de chiffrement qu'on chiffre par RSA. Le destinaire reçoit la clef DES et le fichier, il déchiffre la clef DES avec sa clef RSA privée et connait ainsi le mot de passe permettant de déchiffrer le fichier.
    Mais donc si malgré ces critiques tu veux implémenter un RSA utile, tu devras alors utiliser des grands nombres et passer par une bibliothèque dédiée à ce travail.

    Si c'est juste pour le plaisir, alors tu as moins de problèmes. Tu peux très bien travailler avec des unsigned longs et chiffrer tes octets via la méthode que j'ai expliquée ici. Te suffit d'écrire une fonction "chiffrer" et une "déchiffrer" appliquable à un octet puis, une fois que tu l'as bien testée, l'appliquer sur chaque octet du fichier...

    Citation Envoyé par dzerko Voir le message
    Pour le moment le type de ma fonction n'est vraiment pas ce qui m'interesse sachant que j'ai diminué mes valeurs RSA pour pouvoir faire tenir le tout dans un long. Je suis seulement en phase test et donc n'ai pas besoin pour le moment d'un unsigned.
    Mauvais argumentaire. Même en phase de test on part quand-même sur un code complètement implémenté (donc avec les bon types) sinon ben les tests partent faussés dès le départ.
    Et puis c'est pas compliqué de voir que la fonction est "long" et que la valeur renvoyée étant "int" il faut la changer. En fait, ça aurait dû être un automatisme de déclarer la variable retournée du même type de la fonction...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #31
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2016
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Je ne m'étais pas penché sur d'autres méthodes de chiffrement et il est vrai que je n'avais pas pensé possible la méthode de chiffrer la clé seulement via RSA et de chiffrer le contenu du fichier via une autre méthode. Je vais essayé de me renseigner la dessus.

Discussions similaires

  1. [MySQL] Problème: Mauvais retour de valeur dans mysql
    Par Krabbos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/05/2011, 15h09
  2. Optimisation multiplication complexe : problème de retour de valeur en double
    Par Antonin08 dans le forum x86 32-bits / 64-bits
    Réponses: 8
    Dernier message: 06/06/2008, 08h52
  3. Réponses: 23
    Dernier message: 28/05/2008, 17h53
  4. Nouvelle installation MySql4.0.2d - Problème retour chariot
    Par pit_bulle dans le forum Installation
    Réponses: 2
    Dernier message: 30/09/2004, 16h07
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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