Chiffrement d'un texte
Fermé
MilaMissa
Messages postés
24
Date d'inscription
jeudi 5 décembre 2013
Statut
Membre
Dernière intervention
28 avril 2015
-
Modifié par Chris 94 le 14/03/2014 à 13:46
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 mars 2014 à 13:05
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 mars 2014 à 13:05
A voir également:
- Chiffrement d'un texte
- Mettre un texte en majuscule - Guide
- Comment retranscrire un entretien audio en texte - Guide
- Excel cellule couleur si condition texte - Guide
- Texte barré whatsapp - Guide
- Copier texte pdf - Guide
9 réponses
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 323
14 mars 2014 à 13:46
14 mars 2014 à 13:46
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.
MilaMissa
Messages postés
24
Date d'inscription
jeudi 5 décembre 2013
Statut
Membre
Dernière intervention
28 avril 2015
14 mars 2014 à 13:49
14 mars 2014 à 13:49
oui j'attends pas d'une solution exacte , juste des idées .. mercii
nidhogg-59
Messages postés
102
Date d'inscription
mercredi 20 juin 2012
Statut
Membre
Dernière intervention
5 décembre 2015
27
14 mars 2014 à 17:37
14 mars 2014 à 17:37
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.
MilaMissa
Messages postés
24
Date d'inscription
jeudi 5 décembre 2013
Statut
Membre
Dernière intervention
28 avril 2015
14 mars 2014 à 19:15
14 mars 2014 à 19:15
mercii pour ces info , mais encore le prblm est dans le décalage je sais pas comment je procède ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
14 mars 2014 à 19:55
14 mars 2014 à 19:55
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.
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
14 mars 2014 à 20:06
14 mars 2014 à 20:06
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
nidhogg-59
Messages postés
102
Date d'inscription
mercredi 20 juin 2012
Statut
Membre
Dernière intervention
5 décembre 2015
27
14 mars 2014 à 20:31
14 mars 2014 à 20:31
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?
MilaMissa
Messages postés
24
Date d'inscription
jeudi 5 décembre 2013
Statut
Membre
Dernière intervention
28 avril 2015
14 mars 2014 à 21:05
14 mars 2014 à 21:05
#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 :( ...
nidhogg-59
Messages postés
102
Date d'inscription
mercredi 20 juin 2012
Statut
Membre
Dernière intervention
5 décembre 2015
27
Modifié par nidhogg-59 le 14/03/2014 à 22:25
Modifié par nidhogg-59 le 14/03/2014 à 22:25
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.
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
15 mars 2014 à 09:45
15 mars 2014 à 09:45
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
MilaMissa
Messages postés
24
Date d'inscription
jeudi 5 décembre 2013
Statut
Membre
Dernière intervention
28 avril 2015
15 mars 2014 à 22:23
15 mars 2014 à 22:23
si tu peu me le passé , tu me fera un grand plaisir, et je vous remerci pour votre aide ^^
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
Modifié par sambia39 le 16/03/2014 à 09:39
Modifié par sambia39 le 16/03/2014 à 09:39
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
nidhogg-59
Messages postés
102
Date d'inscription
mercredi 20 juin 2012
Statut
Membre
Dernière intervention
5 décembre 2015
27
Modifié par nidhogg-59 le 16/03/2014 à 12:31
Modifié par nidhogg-59 le 16/03/2014 à 12:31
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!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
16 mars 2014 à 13:05
16 mars 2014 à 13:05
Ton code ne marchera pas sur un texte mais que sur un mot...