Cryptage.. en c

Résolu/Fermé
Naimor49 Messages postés 21 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 1 février 2016 - Modifié par Naimor49 le 3/02/2014 à 18:39
Naimor49 Messages postés 21 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 1 février 2016 - 4 févr. 2014 à 10:21
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
3 févr. 2014 à 22:38
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 vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
3 févr. 2014 à 23:34
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 lundi 3 février 2014 Statut Membre Dernière intervention 1 février 2016
4 févr. 2014 à 10:21
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