Cryptage.. en c
Résolu
Naimor49
Messages postés
23
Statut
Membre
-
Naimor49 Messages postés 23 Statut Membre -
Naimor49 Messages postés 23 Statut Membre -
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
C'est une fonction de cryptage assez classique
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
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,
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,