Cryptage.. en c

Résolu
Naimor49 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
Naimor49 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -
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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
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
Naimor49 Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
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