Cryptage.. en c

Résolu
Bonsoir,

Je cherche à réaliser une fonction de cryptage à l'aide d'une clef de la même longueur que mon message, grace au code ASCII.
Or ma fonction ne fonctionne pas... une idée ? Je ne suis pas loin ... mais ça ne marche pas parfaitement

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DEBUT 97
#define N 3



int main(void){
int i;
char message_let[N], clef_let[N], code_let[N];
int message_chif[N], clef_chif[N], code_chif[N];

printf ("Saisissez tout d'abord votre message a coder de %d caractères :",N);
scanf("%s",message_let);
printf("Saisissez à présent la clef :");
scanf("%s",clef_let);
printf("Merci... ");


printf(" \n Votre message chiffre est :");
for (i=0;i<N;i++){
   message_chif[i]=(int)message_let[i];
   printf("%d.",message_chif[i]);
}


printf("\nVotre code chiffre est :");
for (i=0;i<N;i++){
    clef_chif[i]=(int)clef_let[i];
    printf("%d.",code_chif[i]);
}


for(i=0;i<N;i++){
    code_chif[i]=message_chif[i]+clef_chif[i];
    code_chif[i]=code_chif[i]%DEBUT;
    code_chif[i]=code_chif[i]+DEBUT;
}


for(i=0;i<N;i++){
    code_let[i]=(char)code_chif[i];
}


printf("\nVotre message code est donc :");
for(i=0;i<N;i++){
    printf ("%c",code_let[i]);
}
return (0);
}



C'est une fonction de cryptage assez classique

3 réponses

  1. En fait c'est bon tout marche très bien maintenant !!! :) Il y avait un problème au niveau de N, mes tableaux devaient dépasser ou qqch comme ça .. mais maintenant mon programme touuurne merci beaucoup !
    0
    1. Bonjour à tous
      juste une petite infos, le chiffrement que tu essaie de faire, ce veux apparenter à celui de vigenère (dit chiffrement de vigenère, et que je te conseil d'allé voir)
      0
      1. Contributeur
        Bonjour,

        Pourquoi un N aussi petit ?
        D'autant que : scanf("%s",message_let);
        Si tu rentres une chaîne de plus que 2 caractères, ça risque de planter.
        Tu peux mettre N à 255 sans problème.

        Et pour info, cryptage ça n'existe pas. On parle de chiffrement ;-).

        for(i=0;i<N;i++){
        printf ("%c",code_let[i]);

        Il ne faut pas oublier de mettre un putchar('\n'); avant le return 0; final pour forcer l'affichage.
        Sinon, tout simplement : puts(code_let); ou printf("%s\n",code_let);

        Plutôt que mettre des chiffres comme 97, autant mettre directement la valeur correspondante entre apostrophes. C'est beaucoup plus lisible.

        Sinon, qu'est-ce qui ne marche pas ?

        Cdlt,
        1