Crypter une chaîne de caractère (xor)

Fermé
Black:bag Messages postés 6 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 30 juin 2013 - 20 juin 2013 à 01:51
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 - 23 juil. 2013 à 08:47
Bonjour,
Je voudrai crypter une chaîne de caractère (le cryptage xor) .
le code: (ou' il y a des problèmes)
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   int i=0,j=0;

 char str[18] = "UnePhraseACrypter";
 char psw[18] = "UnBiiigMotDePasse";


for(i=0;str[i]!= '\0';i++)
{
          printf(":%s",str[i]);

for(j=0;psw[j]!= '\0';j++)
{
char key =str[i] ^ psw[j];

printf("Votre phrase de nouveau est %s:\n",key);
}
}
return 0;

}





Mais ,apparemment il affiche une erreur (Windows) pouvez vous m'aider ?

A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
20 juin 2013 à 14:08
Mais ,apparemment il affiche une erreur (Windows) pouvez vous m'aider ?
Quelle erreur windows ?

printf("Votre phrase de nouveau est %s:\n",key);
key est un char et tu affiches une chaîne de caractères (%s). Il faudrait plutôt mettre : %c. Attention, cela n'est pas forcément une valeur ascii. Tu as de forts risques d'avoir un drôle de caractère ;-)
0
Black:bag Messages postés 6 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 30 juin 2013
20 juin 2013 à 16:35
Bsr,

Oui merci
pour afficher le résultat ( du cryptage xor) je dois utiliser (%c) c'est proprement correct .

Mais que pensez vous de la structure du code est ce qu 'il est valide ??
oui , le résultat n'est pas proprement (une valeur ascii ) .
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
3 juil. 2013 à 20:59
Bonjour,

La structure est correcte pour ce programme s'il reste en l'état.
Mais, il serait mieux de faire les fonctions :
- int ChiffrementXor(const char *clair, const char *cle, char *res);
- void affichage(const char *chaine);

Ainsi, ça sera beaucoup plus propre :-).
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
3 juil. 2013 à 21:02
Ce serait plus propre de créer deux fonctions :
int chiffrementXor(const char *clair, const char *cle, char *resultat);
void affichage(const char *chaine);
0
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 1 101
Modifié par [Dal] le 4/07/2013 à 13:58
Salut Black:bag, salut fiddy,

Je ne crois pas que le code donne quelque chose de bien utile, même s'il se compile et s'exécute sans erreurs ou avertissements en rectifiant le %c.

- XOR est fait sur chaque caractère de str avec successivement les caractères de psw, mais le résultat n'est pas utilisé pour les opérations suivantes, ni conservé en dehors de la boucle for. Du coup, le résultat des opérations est perdu

- ont fait un printf sur un caractère (en utilisant %c comme le dit fiddy), à chaque itération de la boucle la plus profonde.. je ne sais pas si c'est volontaire... en tout cas cela n'affiche pas un résultat, mais la série d'opérations intermédiaires

- quelque soit l'algorithme utilisé, il faut, à mon sens, conserver la taille de la chaîne d'origine, car autrement, les opérations XOR peuvent conduire à produire zéro, qui sera considéré comme le caractère '\0', et on ne saura pas quelle est la longueur des données chiffrées à sauvegarder .. et qui devront être déchiffrées ultérieurement


Dal
0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
22 juil. 2013 à 16:47
Bonjour,

Pour info : le mot "crypter" n'a aucun sens...

Chiffrer : encoder grâce à une clé (ce que tu veux faire)
Déchiffrer : décoder grâce à une clé

Décrypter : décoder sans la clé (bruteforce)
Crypter : encoder sans la clé ???

Cdlt.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
22 juil. 2013 à 17:12
Pour info : le mot "crypter" n'a aucun sens...
+1

Chiffrer : encoder grâce à une clé (ce que tu veux faire)
Encoder ??? -1 ;-)
0