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

Réseau C Discussion :

Probéme systeme de cryptage XOR


Sujet :

Réseau C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut Probéme systeme de cryptage XOR
    Bonjour voila je m'intresse beaucoup beaucoup à la cryptographie sur l'operateur XOR, j'ai compris la theorie mais ensuite pour le mettre en pratique sur un programme C. Voila, je n'arrive pas du tout a crypter le contenu d'un fichier choisi je ne sais la procedure en (C) à faire j'ai essayé mais voila le resultat:

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
     
    int main(void)
    {
    	FILE *fichier;
    	int clef;
    	char crypt[300];
    	char file[30];
     
    	printf("Choisissez le fichier a crypter:\t");
    	scanf("%s",file);
    	printf("Entrer votre clef de cryptage(numerique):\t");
    	scanf("%d",clef);
     
    	while(1)
            {
                    char ch;
                    int xor;
                    int i=0;
     
                    xor[i] = ch[i] ^ clef;
                    printf("%s",xor);
                    fputs(xor,file);
             }
     
              getch();
    }
    Voila mais bon le code ne run pas du tout.

    Merci beaucoup de votre aide

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    +++ Médinoc compiler v1.0 +++
    1. Les fonctions de conio.h ne servent pas à grand-chose, ici, tu sais... Tu développes sous Dev-C++ ?
    2. Utilisation de scanf("%s"), l'une des deux pires usages possibles de scanf(). Utiliser fgets() et se débarrasser ensuite du \n en trop.
    3. Oubli du & dans l'utilisation de scanf("%d");
    4. Oubli d'ouverture du fichier.
    5. Usage de valeurs entières (ch et xor) comme des tableaux alors que ce n'en sont pas.
    6. Affichage d'un entier en tant que chaîne (printf("%s").
    7. Écriture d'un entier en tant que chaîne (fputs)
    8. Oubli de fermeture du fichier.

    +++ Echec de compilation. Code source très incorrect. +++
    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.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    T'es bien gentil merci beaucoup mais si ça serai possible de m'aider et pas me juger STP j'essaie d'apprendre mais si le forum est destiné au Elite fallais le dire avant.

    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je t'ai indiqué tes erreurs : La première chose à faire est de tenter de les corriger. Ici, on ne pond pas du code tout fait.
    Si tu n'arrives pas à les corriger, on t'aidera un peu plus. Si tu n'essaies pas de les corriger, nul tu resteras.
    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.

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Salut,

    En plus des erreurs soulevées par Médinoc et la gestion très approximatives des entrées-sorties (une recherche sur le forum te permettra de trouver des solutions robustes à ces problèmes), ton code contient également des erreurs algorthmiques, et notamment:
    • ta boucle while s'exécute indéfiniment (aucune condition de sortie n'est prévue).
    • la variable i n'est par jamais incrémentée, et d'autre part, elle est initialisée à 0 dans le corps de la boucle.


    Enfin, comme l'a dit Médinoc, les variables ch et xor ne sont pas des tableaux. Il ne sert donc à rien d'itérer dessus.

    Citation Envoyé par raphy75
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	while(1)
            {
                    char ch;
                    int xor;
                    int i=0;
     
                    xor[i] = ch[i] ^ clef;
                    printf("%s",xor);
                    fputs(xor,file);
             }
    Pourrais-tu poster l'algorithme que tu désires implanter? Salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Comme je l'ai dis je suis initié en cryptographie en faite mon probléme c'est que je ne sais comment ça se passe, je me suis beaucoup renseigné à propos de l'operateur XOR mais je ne savais pas qu'il fallait faire un algorithme avant de coder le programme dsl
    Si ça serait possible d'une petite explication histoire de me mettre sur le droit chemain à propos de l'importance de l'algorithme...

    Heu je voulais m'excuser de mon insolence ,Médinoc je suis en train de chercher mes erreurs mais pas trop evident, voila j'ai seulement reussit à faire ça :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
     
    void cryptage()
    {
            int i;
            char mot[300];
            char crypt[300];
            int clef;
            char fic[20];
            FILE *fichier;
     
            printf("Texte crypte:\t");
            fgets("%s",mot);
            printf("Entrer clef(numerique:\t");
            fgets("%d",&clef);
     
            for (i=0;i<strlen(mot);i++)
            {
                    crypt[i]=mot[i] ^ clef;
            }
     
            printf("Texte crypte: %s\n",crypt);
            fichier=fopen("cryptage.txt","w");
            fputs(crypt,fichier);
            fclose(fichier);
    }
    int main(void)
    {
            cryptage();
            getch();
    }
    le probléme c'est que :
    1. Je veux crypter le contenu d'un fichier mais je ne sais quelle manoeuvre en (C) pour parcourir le contenu d'un fichier
    2. Je veux décrypter (mais ça j'aimerais essayer de le faire seul j'ai une petite idée j'ai bien analysé la table de verité)

    Ben voila et merci beaucoup de votre aide

  7. #7
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Pour les fichiers , tout est très bien expliqué ici

  8. #8
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    voilà j'ai un peu amélioré le code:

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
     
    void cryptage()
    {
            int i;
            char mot[300];
            char crypt[300];
            int clef;
            char fic[20];
            FILE *fichier;
     
            printf("Texte crypte:\t");
            fgets(mot, 300, stdin);
            printf("Entrer clef(numerique:\t");
            scanf("%d",&clef);
     
            for (i=0; mot[i] != 0 ;i++)
            {
                    crypt[i]=mot[i] ^ clef;
            }
     
            printf("Texte crypte: %s\n",crypt);
            fichier=fopen("cryptage.txt","w");
            fputs(crypt,fichier);
            fclose(fichier);
    }
    int main(void)
    {
            cryptage();
            getch();
    }
    Notamment fgets était mal utilisé.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par raphy75
    Comme je l'ai dis je suis initié en cryptographie en faite mon probléme c'est que je ne sais comment ça se passe, je me suis beaucoup renseigné à propos de l'operateur XOR mais je ne savais pas qu'il fallait faire un algorithme avant de coder le programme dsl
    Si ça serait possible d'une petite explication histoire de me mettre sur le droit chemain à propos de l'importance de l'algorithme...
    Pour chiffrer (ou crypter) un fichier tu as deux possibilités en cryptographie :
    - la crypto asymétrique
    - la crypto symétrique
    L'un utilisant deux clefs différentes (une privée, une publique), l'autre utilisant une seule et une clef (la clef secrète).
    Pour ces deux méthodes de chiffrement il existe plusieurs algos. Parmi eux RSA (asym), AES, DES, RC4 (sym). (ceci est une liste non exhaustive bien entendu).
    Ton problème ici est de choisir un de ces algos et celui dont tu parles (XOR) m'est inconnu. Je sais que XOR est juste une opération logique bit à bit entre deux nombres. Beaucoup d'algos de chifrment utilisent cet opérateur mais il n'est pas, à ma connaissance, un algo de chiffrement à lui tout seul (ou bien très faible ).

    Si tu veux chiffrer un fichier, tu dois donc commencer par te demander quel genre de chiffrement tu veux faire (Asym/Sym) et quel algo utiliser suivant tes besoins.
    Une fois ces choses définies il ne te reste plus qu'à trouver la biliothèque C (vu que tu postes ici) adaptée pour appeler cet algo implémenté car je te déconseille vivement de tenter de l'implémenter toi-même pour la bonne raison que ça a été forcément déjà fait et qui plus est très bien fait !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    A oui je vois mais attends frizou11 quand tu dis :

    Une fois ces choses définies il ne te reste plus qu'à trouver la biliothèque C (vu que tu postes ici) adaptée pour appeler cet algo implémenté car je te déconseille vivement de tenter de l'implémenter toi-même pour la bonne raison que ça a été forcément déjà fait et qui plus est très bien fait !
    De l'implémenter moi-meme c'est a dire que tu me deconseille que je code moi méme ? que le meilleur a faire est de prendre un programme tout fait mais alors je ne comprends pas ce n'est pas de la "triche" parce que aprés tout le monde en ai capable de faire cela il n'y a aucune difficulté non ?

    Je suis dsl de ne pas etre azzez clair frizou11.

    Merci de ta reponse

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je suis de retour.
    Déjà, on va essayer de faire au plus simple, et pour cela on ne va pas utiliser de tableau lors de la lecture du fichier.

    Le mieux est de faire une fonction de cryptage simple, char par char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /* Fonction toute simple qui crypte un fichier ouvert,
       vers un autre fichier ouvert.
       Ici, j'ai repris directement ton algorithme. */
    void CryptageFichiersOuverts(FILE *pfIn, FILE *pfOut, int cle)
    {
    	int carac;
    	while((carac = fgetc(pfIn)) != EOF)
    	{
    		int xored = carac ^ cle;
    		fputc(xored, pfOut);
    	}
    }
    Ensuite, une fonction qui ouvre les fichiers :
    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
    /* Cette fonction est ce qui te manquait, 
       elle fait JUSTE l'ouverture (et la fermeture) des fichiers,
       et appelle la fonction de cryptage. */
    void Cryptage(const char *nomFichSrc, const char *nomFichDest, int cle)
    {
    	FILE *pfIn = fopen(nomFichSrc, "r");
    	if(pfIn == NULL)
    	{
    		puts("Echec d'ouverture du fichier source.");
    	}
    	else
    	{
    		FILE *pfOut = fopen(nomSichDest, "w");
    		if(pfOut == NULL)
    		{
    			puts("Echec d'ouverture du fichier destination.");
    		}
    		else
    		{
    			CryptageFichiersOuverts(pfIn, pfOut, cle);
    			fclose(pfOut);
    		}
     
    		fclose(pfIn);
    	}
    }
    Et dans le main(), on demande les noms des fichiers, la clé et on crypte...
    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.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par raphy75
    De l'implémenter moi-meme c'est a dire que tu me deconseille que je code moi méme ? que le meilleur a faire est de prendre un programme tout fait mais alors je ne comprends pas ce n'est pas de la "triche" parce que aprés tout le monde en ai capable de faire cela il n'y a aucune difficulté non ?
    Tu as deux solutions:
    1. Tu as un algo à toi. Tu l'as bien pensé et écrit soigneusement sur une feuille de papier. Alors il ne te reste plus qu'à l'implémenter (ie le coder) en C ou ce que tu veux.
    2. Tu souhaites faire appel à un algo existant alors tu peux toujours essayer de le re-implémenter mais déjà tente de l'utiliser via une bibliothèque l'ayant déjà implémenté, ce sera déjà un bon pas de fait.

    Le choix du 1. ou du 2. dépend essentiellement de savoir si tu veux un algo de chiffrement sûr et efficace.
    En effet, dans la première solution c'est ton algo sur lequel tout repose et c'est pas que je doute de tes talents de fin cryptologue masi beaucoup s'y sont cassés les dents.
    Tandis que dans la seconde solution, tu utilises un algo bien écrit, bien sûr (ce qui est important en chiffrement ) et tu y fais appel en implémentant ton bout de code qui prend ton fichier en entrée et qui ressort le fichier chiffré e nutilisant l'algo implémenté par une bibliothèque. Ce n'est pas de la triche : tu utilise une fonction implémentée. Si tu appelles ça de la triche alors dès que tu fais un bête printf ou un fopen c'est aussi de la triche vu que ce sont des fonctions implémentées dans une bibliothèque...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    frizou11 : raphy75 ne cherchait pas "un algorithme de chiffrement sûr et efficace". Pour l'exemple actuel, il a juste fait un cryptage XOR.
    Passer à un algorithme plus sûr, c'est pour une fois que le reste marche, pas avant...
    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.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    AA ue je vois un peu merci mais l'utilisation de fonction j'en ai pas trop l'habitude mais sinon c'est possible d'ecrire le code mais sans fonction hein ça reviendrai au meme ?

    La fonction fgetc() permet de parcourir le contenu du fichier ?

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Médinoc
    frizou11 : raphy75 ne cherchait pas "un algorithme de chiffrement sûr et efficace". Pour l'exemple actuel, il a juste fait un cryptage XOR.
    Passer à un algorithme plus sûr, c'est pour une fois que le reste marche, pas avant...
    Ok, mais je prenais les devants pour que raphy75 définisse bien ses besoins.
    S'il implémente un algo qu'il trouve après trop faible ça serait une perte de temps.
    Mais j'avoue que c'est un bon entrainement.
    Désolé, j'ai mal lu le premier post et donc mal compris ce que raphy75 cherchait exactement.
    Bon courage alors

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par raphy75
    AA ue je vois un peu merci mais l'utilisation de fonction j'en ai pas trop l'habitude mais sinon c'est possible d'ecrire le code mais sans fonction hein ça reviendrai au meme ?
    Tu n'en as pas trop l'habitude, mais c'est indispensable: C'est beaucoup plus simple et facile à comprendre comme ça.
    Mais je vais compléter l'aperçu en montrant la fonction main().

    La fonction fgetc() permet de parcourir le contenu du fichier ?
    La fonction fgetc() lit un caractère d'un fichier. Elle retourne une valeur entre 0 et 255 si OK, EOF sinon.
    EOF signifie soit une erreur, soit la fin du fichier. Ici, on s'arrête dans les deux cas (c'est le plus simple).
    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.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Voilà pour la fonction main(), qui est comme la tienne en fait.
    Par contre, la fonction DemandeEtCrypte() est plus intéressante :
    Elle montre comment utiliser fgets() pour demander le nom du fichier à crypter, et vérifier que le nom du fichier "rentre" bien dans le tableau.
    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
    #include <stdio.h>
    #include <string.h>
     
    void DemandeEtCrypte()
    {
    	char nomFich[300] = "";
    	char *pRetour = NULL;
    	int clef;
     
    	printf("Nom du fichier a crypter : ");
    	fflush(stdout); /* Nécessaire si une ligne ne se termine pas par \n */
     
    	/* On lit le nom de fichier, 
    	   puis on vérifie qu'il rentre en entier dans la zone de 300 char.
    	   S'il rentre, le \n sera dedans, et il faudra le supprimer.
    	   Si ça ne rentre pas, le \n ne sera pas dedans, et on dira Erreur. */
    	fgets(nomFich, 300, stdin);
    	pRetour = strchr(nomFich, '\n');
    	if(pRetour == NULL)
    	{
    		/* Le \n final n'est pas dans le nom de fichier. */
    		puts("Nom de fichier trop grand.");
    	}
    	else
    	{
    		/* Le \n est présent : OK, on tronque la chaîne ici. */
    		*pRetour = '\0';
     
    		printf("Entrer clef(numerique) : ");
    		fflush(stdout);
     
    		/* On lit la clé. */
    		scanf("%d", &clef);
     
    		/* On lance le cryptage du fichier, et on met le resultat dans "fichier_crypte.txt".
    		   Si on veut, on peut demander le nom du fichier destination à la place... */
    		Cryptage(nomFich, "fichier_crypte.txt", clef);
    	}
    }
     
    int main(void)
    {
    	DemandeEtCrypte();
    	getch();
    }
    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.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Merci Frisou heuu je crois que j'ai reussis le cryptage mais le decryptage je suis en train d'essayer ...

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
    	FILE *fichier;
    	char filename1[30];
     
    	FILE *fichier2;
    	char filename2[30];
     
    	int caractere;
    	int clef;
    	int xor;
     
        	printf("Entrer le fichier qui doit etre crypte(ne pas oublier l'extension ex: .txt ):");
        	scanf("%s",filename1);
     
        	if (fichier=fopen(filename1,"r") == NULL)
        	{
    		printf("Erreur, fichier %s inexistant\n",filename1);
    		return 0;
    	}
    	else
            {
    		printf("Entrer le nouveau fichier crypte(ne pas oublier l'extension ex: .txt ):");
    		scanf("%s",filename2);
     
    		printf("Entrer votre clef de cryptage:");
    		scanf("%d",&clef);
     
                    fichier=fopen(filename1,"r");
     
    		while((caractere=fgetc(fichier)) != EOF)
    		{ 
    			fichier2=fopen(filename2,"a");
    			xor = caractere ^ clef;
    			fputc(xor,fichier2);
    		}
    	}
     
    }
    Je voulais juste savoir si le code etait faux ...

    Merci de votre aide .

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    dsl Medinoc je n'avais pas vu ton post :

    OO oui c'est ça que je veux merci beaucoup je vais y travailler merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Note: Avec un cryptage XOR, le cryptage et le décryptage sont exactement la même opération.
    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.

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

Discussions similaires

  1. Cryptage XOR en C
    Par tazimovski773 dans le forum C
    Réponses: 4
    Dernier message: 15/07/2014, 13h39
  2. cryptage xor avec clé
    Par deny dans le forum Sécurité
    Réponses: 0
    Dernier message: 29/06/2008, 08h54
  3. Cryptage / decryptage xor
    Par deny dans le forum Débuter
    Réponses: 2
    Dernier message: 08/06/2008, 11h52
  4. Cryptage XOR + clé variable
    Par jusi dans le forum Delphi
    Réponses: 9
    Dernier message: 26/02/2007, 14h49
  5. [delphi 7 perso] Cryptage XOR et assembleur
    Par Loran dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 10h44

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