A voir également:
- Codeur de texte en C
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
- Transcription texte en audio - Guide
- Convertisseur récupération de texte - Guide
8 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 oct. 2009 à 11:02
27 oct. 2009 à 11:02
ça y est, j'ai compris !
je n'avait pas vu que ta clé de cryptage était dans le for, du coup tu la perds !
Si tu sort le rand() de la boucle ça devrais mieux fonctionné.
Pour le "z", j'ai mal lu, le if est après le décryptage.
je n'avait pas vu que ta clé de cryptage était dans le for, du coup tu la perds !
Si tu sort le rand() de la boucle ça devrais mieux fonctionné.
Pour le "z", j'ai mal lu, le if est après le décryptage.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 oct. 2009 à 12:12
27 oct. 2009 à 12:12
Après, c'est plus dur, il faut remettre le rand() dans ta boucle mais incrémenter à chaque fois crypteur et donc lui allouer l'espace minimum.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
nicoolman
27 oct. 2009 à 12:57
27 oct. 2009 à 12:57
autant que tu as de caractère. 100, plus ou moins, ça dépend.
nicoolman
>
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
27 oct. 2009 à 13:25
27 oct. 2009 à 13:25
et comment lui dire de prendre la variable suivante ?
parce que l'incrementation rajoute une valeur a une variable et je ne vois pas comment faire ?
parce que l'incrementation rajoute une valeur a une variable et je ne vois pas comment faire ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 oct. 2009 à 14:11
27 oct. 2009 à 14:11
regarde du coté des tableaux.
crypteur++
crypteur++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 oct. 2009 à 12:48
26 oct. 2009 à 12:48
pourquoi utiliser des int ?
Sinon, il faut que tu passes par des variables temporaire en char.
Je suis désolé, mais j'ai un peut de mal à comprendre ton souci.
Sinon, il faut que tu passes par des variables temporaire en char.
Je suis désolé, mais j'ai un peut de mal à comprendre ton souci.
pour ca je me suis débrouillé mais maintenant j'ai un autre problème quand je cherche a décrypter le message il n'y a que la dernière lettre qui se decrypte (parce que la variable crypteur ne garde que la dernière clé en mémoire) comment arranger cela ? :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main ( int argc, char** argv )
{
char texte[100];
char *frein_du_crypteur;
const char MAX = 60, MIN = 0;
char *crypteur ;
gets(texte);
printf("\n\n");
for (frein_du_crypteur = texte; *frein_du_crypteur != 0; frein_du_crypteur++)
{
*crypteur = (rand() % (MAX - MIN ));
(*frein_du_crypteur) += *crypteur;
printf ("%s", crypteur);
if (*frein_du_crypteur >= 61)
{
(*frein_du_crypteur)-=61;
}
}
printf ("\n\n%s", texte);
printf("\n\n");
for (frein_du_crypteur = texte; *frein_du_crypteur != 0; frein_du_crypteur++)
{
(*frein_du_crypteur) -= *crypteur;
if (*frein_du_crypteur <= -1)
{
(*frein_du_crypteur)+=61;
}
}
printf ("\n\n%s", texte);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main ( int argc, char** argv )
{
char texte[100];
char *frein_du_crypteur;
const char MAX = 60, MIN = 0;
char *crypteur ;
gets(texte);
printf("\n\n");
for (frein_du_crypteur = texte; *frein_du_crypteur != 0; frein_du_crypteur++)
{
*crypteur = (rand() % (MAX - MIN ));
(*frein_du_crypteur) += *crypteur;
printf ("%s", crypteur);
if (*frein_du_crypteur >= 61)
{
(*frein_du_crypteur)-=61;
}
}
printf ("\n\n%s", texte);
printf("\n\n");
for (frein_du_crypteur = texte; *frein_du_crypteur != 0; frein_du_crypteur++)
{
(*frein_du_crypteur) -= *crypteur;
if (*frein_du_crypteur <= -1)
{
(*frein_du_crypteur)+=61;
}
}
printf ("\n\n%s", texte);
return 0;
}
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 oct. 2009 à 16:55
26 oct. 2009 à 16:55
Je ne voi pas le souci là.
à la place de ton printf(%s,texte), écrit des nombres : printf("%d %d %d\n",texte[0],texte[1]...);
Comme ça tu débugue en ASCII et tu sais à combien tu es.
https://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
Pour info, a-b codé de 97 à 122 (ton 60 semble faux du coup)
à la place de ton printf(%s,texte), écrit des nombres : printf("%d %d %d\n",texte[0],texte[1]...);
Comme ça tu débugue en ASCII et tu sais à combien tu es.
https://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
Pour info, a-b codé de 97 à 122 (ton 60 semble faux du coup)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 oct. 2009 à 08:25
27 oct. 2009 à 08:25
bon alors, pour être plus clair.
ta variable aléatoire est comprise entre 0 et 60.
Ton texte, si on suppose qu'il est en minuscule (pour commencer) prend des valeurs de 97 à 122.
un char (1 octet) prend une valeur allant de -128 à 127.
Lorsque tu additionnes ton texte à ta variable aléatoire, tu couvre une plage allant de 97 à 127 et de -128 à -63 (pas sur du -63, mais c'est dans l'idée) selon la valeur du texte et celle de la variable.
si par exemple, tu prend "z" (donc 122) et que tu lui ajoute (variable aléatoire) 7, tu obtiens -127. Cette valeur est inférieur à 61, donc tu ne la modifie pas. Lors du décryptage la valeur est inférieur à -1, tu lui ajoute alors 61 pour obtenir -66, qui correspond à un caractère étendue. C'est ton algorithme qui est mauvais.
D'ailleurs si tu relis le message que tu as mis, ton texte encrypté est bien différent du texte décrypter, preuve que ce n'est pas un problème que seul le dernier caractère est modifié.
ta variable aléatoire est comprise entre 0 et 60.
Ton texte, si on suppose qu'il est en minuscule (pour commencer) prend des valeurs de 97 à 122.
un char (1 octet) prend une valeur allant de -128 à 127.
Lorsque tu additionnes ton texte à ta variable aléatoire, tu couvre une plage allant de 97 à 127 et de -128 à -63 (pas sur du -63, mais c'est dans l'idée) selon la valeur du texte et celle de la variable.
si par exemple, tu prend "z" (donc 122) et que tu lui ajoute (variable aléatoire) 7, tu obtiens -127. Cette valeur est inférieur à 61, donc tu ne la modifie pas. Lors du décryptage la valeur est inférieur à -1, tu lui ajoute alors 61 pour obtenir -66, qui correspond à un caractère étendue. C'est ton algorithme qui est mauvais.
D'ailleurs si tu relis le message que tu as mis, ton texte encrypté est bien différent du texte décrypter, preuve que ce n'est pas un problème que seul le dernier caractère est modifié.
27 oct. 2009 à 11:16
le programme crypte et decripte bien mais avec la même lettre ce que je ne souhaite pas .
27 oct. 2009 à 11:26
masque de cryptage : →→→→→→→→→→→→→→→→→→→→
texte avec masque : ä☺:çA{èè☺åå☺:êâ}ëå{ì
utilisation de ce masque : →→→→→→→→→→→→→→→→→→→→
texte sans masque : je m'appelle nicolas
appuyez sur une touche pour
que le programme se finisse.