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

Code::Blocks Discussion :

Comment crypter décrypter en Vigénere et binaire ?


Sujet :

Code::Blocks

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Comment crypter décrypter en Vigénere et binaire ?
    Bonjour, je suis en 1ère année d'étude en ingénierie et j'ai un projet d'informatique à terminer avant lundi. J'aurais besoin d'aide.

    Alors, nous devions faire un programme permettant de crypter et décrypter une phrase de 3 façon différente. Nous avons à peu près réussi la 1ère (méthode César), mais nous avons du mal avec la deuxième partie de la 2ème (méthode Vigénére). On pensait aussi pour la troisième utiliser une méthode binaire mas nous n'y arrivons pas du tout. Merci d'avance pour votre aide.

    Voici notre programme (eh oui, il n'est pas très bien "rangé" et j'ai l'impression que quelques codes sont effacés... ) :

    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
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define ENTREE "entree.txt"
    #define SORTIE "sortie.txt"
    int k = 0;
    int main(int argc, char *argv[]) {
        char menu;
        // ON AFFICHE LE MENU PRINCIPAL...
        printf("                                  __________________             \n\n");
        printf("                                  **MENU PRINCIPAL**              \n");
        printf("                                  __________________             \n\n\n");
        printf("                            Tapez 1 pour utiliser la methode CESAR\n\n");
        printf("                            Tapez 2 pour utiliser la methode VIGENERE \n\n");
        menu = getch();
        system("cls");
        if (menu == '1') // On affiche le premier menu puisque l'utilisateur à taper "1"
        {
            char v;
            printf("                                   _________________             \n\n");
            printf("                                   **METHODE CESAR**              \n");
            printf("                                   _________________             \n\n\n");
            printf("                            Tapez 1 pour coder une phrase manuellement\n\n");
            printf("                            Tapez 2 pour decoder une phrase manuellement\n\n");
            printf("                            Tapez 3 pour coder a partir d'un fichier\n\n");
            printf("                            Tapez 4 pour decoder a partir d'un fichier\n\n");
            scanf("%d", &v);
            system("cls");
            if (v == 1) {
                char car;
                char phrase[1000];
                int i;
                gets(phrase);
                printf("Entrez la phrase a coder: ");
                gets(phrase); // Analyse la chaîne de caractères à coder
                printf("Choisissez un code entre 0 et 100: ");
                scanf("%d", &i);      // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
                printf("le code : "); // Affiche le code
                for (k = 0; k < strlen(phrase); k++) {
                    car = (phrase[k] + i); // Indique le déclage de caractère dans l'ordre alphabétique
                    printf("%c", car);
                }
            }
            if (v == 2) {
                char car;
                char phrase[1000];
                int i;
                gets(phrase);
                printf("Entrez la phrase a decoder: ");
                gets(phrase); // Analyse la chaîne de caractères à coder
                printf("Choisissez un code entre 0 et 100: ");
                scanf("%d", &i);      // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
                printf("le code : "); // Affiche le code
                for (k = 0; k < strlen(phrase); k++) {
                    car = (phrase[k] - i); // Indique le déclage de caractère dans l'ordre inversement alphabétique
                    printf("%c", car);
                }
            }
            if (v == 3) {
                FILE *f_in, *f_out;
                int c;
                {
                    FILE *fichier = NULL;
                    int caractereActuel = 0;
                    int i;
                    char car;
                    fichier = fopen("entree.txt", "r"); // Ouvre et lis le fichier
                    printf("Choisissez un code entre 0 et 100: ");
                    scanf("%d", &i); // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
                    if (fichier != NULL) {
                        // Boucle de lecture des caractères un à un
                        printf("votre texte : ");
                        do {
                            caractereActuel = fgetc(fichier); // On lit le caractère
                                                              // On l'affiche
                            printf("%c", caractereActuel);
                        } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
                    }
                    fichier = fopen("entree.txt", "r");
                    if (fichier != NULL) {
                        printf("\nvotre texte code : ");
                        do {
                            caractereActuel = fgetc(fichier); // On lit le caractère
                                                              // On l'affiche
                            car = caractereActuel + i;
                            printf("%c", car);
                        } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
                        fclose(fichier);
                    }
                    return 0;
                }
            }
            if (v == 4) {
                FILE *f_in, *f_out;
                int c;
                {
                    FILE *fichier = NULL;
                    int caractereActuel = 0;
                    int i;
                    char car;
                    fichier = fopen("sortie.txt", "r"); // Ouvre et lis le fichier
                    printf("Choisissez un code entre 0 et 100: ");
                    scanf("%d", &i); // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
                    if (fichier != NULL) {
                        // Boucle de lecture des caractères un à un
                        printf("votre texte : ");
                        do {
                            caractereActuel = fgetc(fichier); // On lit le caractère
                                                              // On l'affiche
                            printf("%c", caractereActuel);
                        } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
                    }
                    fichier = fopen("sortie.txt", "r");
                    if (fichier != NULL) {
                        printf("\nvotre texte decode : ");
                        do {
                            caractereActuel = fgetc(fichier); // On lit le caractère
                                                              // On l'affiche
                            car = caractereActuel - i;
                            printf("%c", car);
                        } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
                        fclose(fichier);
                    }
                    return 0;
                }
            }
        }
        if (menu == '2') {
            char v;
            printf("                                 ____________________             \n\n");
            printf("                                 **METHODE VIGENERE**              \n");
            printf("                                 ____________________             \n\n\n");
            printf("                            Tapez 1 pour coder une phrase manuellement\n\n");
            printf("                            Tapez 2 pour decoder une phrase manuellement\n\n");
            printf("                            Tapez 3 pour coder a partir d'un fichier\n\n");
            printf("                            Tapez 4 pour decoder a partir d'un fichier\n\n");
            scanf("%d", &v);
            system("cls");
            if (v == 1) {
                char Cle[1000]; // Formé de caractères de 'A' à 'Z' uniquement !
                char Ori[1000];
                char Cry[100], Dec[100]; // Au moins aussi longs que Ori
                int i = 0;
                gets(Ori);
                printf("Entrer la phrase a coder: \n");
                gets(Ori);
                gets(Cle);
                printf("entrer le code: \n");
                gets(Cle);
                int nCle = strlen(Cle), nTxt = strlen(Ori);
                for (int i = 0, k = -1; i < nTxt; ++i) {
                    int c = (int)Ori[i];
                    Cry[i] = ((c + Cle[(++k) % nCle]) % 26) + 26;
                }
                Cry[i] = '/0';
                printf("voila la phrase crypter :  %s", Cry);
            }
            if (v == 2) {
                char Cle[1000]; // Formé de caractères de 'A' à 'Z' uniquement !
                char Ori[1000];
                char Cry[100], Dec[100]; // Au moins aussi longs que Ori
                int i = 0;
                gets(Ori);
                printf("Entrer la phrase a decoder: \n");
                gets(Ori);
                gets(Cle);
                printf("entrer le code: \n");
                gets(Cle);
                int nCle = strlen(Cle), nTxt = strlen(Ori);
                for (int i = 0, k = 1; i < nTxt; ++i) {
                    int c = (int)Ori[i];
                    Cry[i] = ((c + Cle[(++k) % nCle]) % 26) + 26;
                }
                Cry[i] = '/0';
                printf("voila la phrase decrypter :  %s", Cry);
            }
        }
    }

  2. #2
    Membre chevronné
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 333
    Points : 1 828
    Points
    1 828
    Par défaut
    Bonjour,

    Quelques remarques :

    - Quand tu as un problème, essaye de nous dire pourquoi tu as besoin d'aide, quels sont les points bloquants, quelles sont tes pistes... Bref, pose nous des questions sur des points particuliers sinon ça fait un peu "fait le travail à ma place". Les gens qui te répondent sont des bénévoles ;
    - Ici, ton projet est purement scolaire, nous n'allons le faire à ta place, sinon tu n'apprendra rien ;
    - Si tu veux poster du code, utilise la balise code qui permet de l'afficher de manière lisible .

    J'ai lu ton code vraiment en diagonale puisqu'il n'est pas formaté. Ma première remarque :fais des fonction.

    Tu veux faire Vigenère et tu as déjà César. La question que tu dois te poser : pourrait tu réutiliser des fonctions de César pour t'aider? Répond à cette question et tu as fait 95% du boulot.

    Une méthode binaire ce n'est pas très clair. Tu dois faire référence au XOR qui est implémentable très facilement.

    PS: En français on dit chiffrer et déchiffrer et pas (dé)crypter.

Discussions similaires

  1. Comment crypter et décrypter MD5 avec VB6?
    Par js8bleu dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/03/2015, 18h45
  2. Comment crypter et décrypter des données ?
    Par Sunsawe dans le forum C#
    Réponses: 2
    Dernier message: 22/02/2007, 10h50
  3. [Obfuscateur] Comment crypter mes .class en java
    Par ferma dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 01/01/2006, 23h36
  4. [Oracle/SQL-Server] Comment crypter une base de données ?
    Par [DreaMs] dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 28/11/2005, 18h02
  5. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37

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