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   -
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 ..
A voir également:

9 réponses

Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 345
 
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.
0
MilaMissa Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
oui j'attends pas d'une solution exacte , juste des idées .. mercii
0
nidhogg-59 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   28
 
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.
0
MilaMissa Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
mercii pour ces info , mais encore le prblm est dans le décalage je sais pas comment je procède ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Franck7511 Messages postés 14296 Date d'inscription   Statut Membre Dernière intervention   1 121
 
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.
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
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


caractère chiffré C = ((tableaux caractère[i] + cléf[i]) modulo 26)

à bientôt
0
nidhogg-59 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   28
 
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?
0
MilaMissa Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
#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 :( ...
0
nidhogg-59 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   28
 
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:
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.
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
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

/* 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
0
MilaMissa Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
si tu peu me le passé , tu me fera un grand plaisir, et je vous remerci pour votre aide ^^
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
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
0
nidhogg-59 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   28
 
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:
#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!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ton code ne marchera pas sur un texte mais que sur un mot...
0