Chiffrement d'un texte
MilaMissa
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
jai un programme a faire : c'est la Transmission d'un teste chiffré
dont les caractères a transmettre seront convertis en code ascii, ensuite on procède a un décalage de 1 vers la droite (ou vers la gauche) .. en c , je suis débutante ..
jai un programme a faire : c'est la Transmission d'un teste chiffré
dont les caractères a transmettre seront convertis en code ascii, ensuite on procède a un décalage de 1 vers la droite (ou vers la gauche) .. en c , je suis débutante ..
A voir également:
- Chiffrement d'un texte
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
- Texte barré whatsapp - Guide
9 réponses
Bonjour,
CCM ne fait pas les devoirs. Des conseils peuvent être demandés mais il ne faut pas espérer obtenir la solution. De plus, le sujet doit rester dans le cadre de l'informatique et des nouvelles technologies.
CCM ne fait pas les devoirs. Des conseils peuvent être demandés mais il ne faut pas espérer obtenir la solution. De plus, le sujet doit rester dans le cadre de l'informatique et des nouvelles technologies.
Bonjour!
Si tu veux des indications, il faut:
Mettre ta chaine de caractère dans une tableau de char;
pour chaque lettre du tableau:
la remplacer par la lettre suivante (ou précédente) dans l'alphabet.
transmettre le tableau.
Pour ce qui est d'obtenir le numéro d'une lettre:
int numero = (int)('a');
pour obtenir une lettre à partir d'un nombre:
char lettre = (char)(97);
Sachant que les lettre sont numérotées dans l'orde:
a = 97
b = 98
....
Avec ça, tu devrais pouvoir te débrouiller, normalement.
Si t'as besoin de plus d'explications, n'hésite pas.
Si tu veux des indications, il faut:
Mettre ta chaine de caractère dans une tableau de char;
pour chaque lettre du tableau:
la remplacer par la lettre suivante (ou précédente) dans l'alphabet.
transmettre le tableau.
Pour ce qui est d'obtenir le numéro d'une lettre:
int numero = (int)('a');
pour obtenir une lettre à partir d'un nombre:
char lettre = (char)(97);
Sachant que les lettre sont numérotées dans l'orde:
a = 97
b = 98
....
Avec ça, tu devrais pouvoir te débrouiller, normalement.
Si t'as besoin de plus d'explications, n'hésite pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait, ça passe aussi :
int lettre = '0';
ou
char lettre = 48; (voir le code ASCII)
Comme dit plus haut, tu fais un tableau de char où tu met ta chaîne et une boucle qui parcourt le tableau et remplace chaque élément de ce tableau par son successeur... Si c'est ça que tu entends par "décalage" bien sûr.
int lettre = '0';
ou
char lettre = 48; (voir le code ASCII)
Comme dit plus haut, tu fais un tableau de char où tu met ta chaîne et une boucle qui parcourt le tableau et remplace chaque élément de ce tableau par son successeur... Si c'est ça que tu entends par "décalage" bien sûr.
Bonsoir
En ce qui concerne le chiffrement d'un mot ou d'un texte je te conseille fortement la lecture sur le chiffrement de César et Vigenère, contrairement à ce que j'ai lue jusqu'ici. je te mets sur la piste en te donnant un coup de pouce pour la suite
à bientôt
En ce qui concerne le chiffrement d'un mot ou d'un texte je te conseille fortement la lecture sur le chiffrement de César et Vigenère, contrairement à ce que j'ai lue jusqu'ici. je te mets sur la piste en te donnant un coup de pouce pour la suite
caractère chiffré C = ((tableaux caractère[i] + cléf[i]) modulo 26)
à bientôt
Je pensais avoir donné toutes les indications nécessaires...
Quel est ton niveau en C?
Tu pourrais nous montrer ce que tu as fais jusqu'ici, et nous dire où tu bloques?
Quel est ton niveau en C?
Tu pourrais nous montrer ce que tu as fais jusqu'ici, et nous dire où tu bloques?
#include <stdio.h>
#include <string.h>
#define MAX 50
int main() {
char ch[MAX] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char c[MAX];
char t[MAX];
int N=MAX;
int i,n;
printf("donner un mot: ");
scanf("%s",&c[MAX]);
printf("donner un nmbre : ");
scanf("%d",&n);
for (i=0; i<strlen(c) ; i++) {
if (strcmp (c,ch )!= 0){
t[i] = ch[i+1];
}
else printf ("erreur");
}
printf("%s\n",&c);
return 0;
}
c'est ce ke j'ai fais :( ...
#include <string.h>
#define MAX 50
int main() {
char ch[MAX] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char c[MAX];
char t[MAX];
int N=MAX;
int i,n;
printf("donner un mot: ");
scanf("%s",&c[MAX]);
printf("donner un nmbre : ");
scanf("%d",&n);
for (i=0; i<strlen(c) ; i++) {
if (strcmp (c,ch )!= 0){
t[i] = ch[i+1];
}
else printf ("erreur");
}
printf("%s\n",&c);
return 0;
}
c'est ce ke j'ai fais :( ...
Bon, tu t'es trop cassé la tête...
tu n'as pas besoin d'un tableau contenant toutes les lettres car tu peux accéder aux lettre grâce à leur numéro, comme dit plus haut.
Si tu veux un décalage de X vers la droite, tu peux faire:
Je ne sais pas si tu voies où je veux en venir...
Sinon, j'ai pas vraiment compris l'intérêt de strcomp, ici.
Pour résumer, tu peux t'en sortir avec 3 variables (4 si tu ne veux pas modifier le texte original).
Si tu veux je peux te passer ton code un peu modifié fonctionnant.
tu n'as pas besoin d'un tableau contenant toutes les lettres car tu peux accéder aux lettre grâce à leur numéro, comme dit plus haut.
Si tu veux un décalage de X vers la droite, tu peux faire:
for( i = 0; i < strlen(c); i++){ t[i] = (char)(c[i] + X) }
Je ne sais pas si tu voies où je veux en venir...
Sinon, j'ai pas vraiment compris l'intérêt de strcomp, ici.
Pour résumer, tu peux t'en sortir avec 3 variables (4 si tu ne veux pas modifier le texte original).
Si tu veux je peux te passer ton code un peu modifié fonctionnant.
Bonjour
En chiffrement dans le cas de celui-ci il est préférable de chiffrer les mots ou le caractère avec une clef au lieu de le décaler de vers la droite où vers la gauche et à force de faire ça en peut au bout d'un certain temps déchiffré le message en clair, contrairement à une clef qui chiffre le message, ce qui donne également un bon coup de fil à retorde si on essaye de forcer le déchiffrage avec une autre clef ou sans;
quant au tableau il peut s'en passer mais cependant pour un début il tout à faire le droit de le garder et s'en référer, mais l'idéale est de le générer à l'aide d'une fonction
à bientôt
En chiffrement dans le cas de celui-ci il est préférable de chiffrer les mots ou le caractère avec une clef au lieu de le décaler de vers la droite où vers la gauche et à force de faire ça en peut au bout d'un certain temps déchiffré le message en clair, contrairement à une clef qui chiffre le message, ce qui donne également un bon coup de fil à retorde si on essaye de forcer le déchiffrage avec une autre clef ou sans;
quant au tableau il peut s'en passer mais cependant pour un début il tout à faire le droit de le garder et s'en référer, mais l'idéale est de le générer à l'aide d'une fonction
/* Pour Générer ton Tableau */ void fGentab(char *tab){ unsigned int i , j; for(i = 32, j = 0 ; i < 127; i++, j++){ tab[j]=(char)i; } } /* Pour chiffré ton mot caractère avec un mots de passe + décalage */ char fEncryptChar(char c,char *pkey){ unsigned int i = 0; if (++i > strlen(pkey) ) { i = 0; } return (c + (pkey[i] - 26 ) ); }
à bientôt
Bonjour,
non je ne te donnerais pas une solution toute faite et quand bien même si je te la donne, tu seras incapable de comprendre ce que j'ai fait et plus encore l'algorithme que j'ai implanté, sans oublier que tu vas t'attribuer le mérite alors que tu n'as absolument rien fait et c'est contre la règle de ce forum.
Mais par contre en peut t'aider sur ce que tu as déjà fait ,d'ailleurs je pense que j'en ai assez fait en te donnent deux fonctions majeures de ton programme
à bientôt
non je ne te donnerais pas une solution toute faite et quand bien même si je te la donne, tu seras incapable de comprendre ce que j'ai fait et plus encore l'algorithme que j'ai implanté, sans oublier que tu vas t'attribuer le mérite alors que tu n'as absolument rien fait et c'est contre la règle de ce forum.
Mais par contre en peut t'aider sur ce que tu as déjà fait ,d'ailleurs je pense que j'en ai assez fait en te donnent deux fonctions majeures de ton programme
à bientôt
Bonjour!
Quand je t'ai parlé de ton algo corrigé, j'ai oublié de te demander si dans le texte, il y aurait aussi des caractères spéciaux et s'il fallait les décaler aussi.
Sinon, ça donnerait quelque chose comme ça:
Voilà! je te laisse faire les modif. pour l'adapter à tes besoins!
Quand je t'ai parlé de ton algo corrigé, j'ai oublié de te demander si dans le texte, il y aurait aussi des caractères spéciaux et s'il fallait les décaler aussi.
Sinon, ça donnerait quelque chose comme ça:
#include <stdio.h> #include <string.h> #define MAX 50 int main() { char c[MAX] = ""; char t[MAX] = ""; int i,n; printf("donner un mot: "); scanf("%s",c); printf("donner un nmbre : "); scanf("%d",&n); for (i=0; c[i] != '\0' ; i++) { t[i] = (char)(c[i]+n); } printf("%s\n",c); printf("%s\n",t); return 0; }
Voilà! je te laisse faire les modif. pour l'adapter à tes besoins!