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

Black:bag Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Contributeur Dernière intervention   1 846
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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   Statut Membre Dernière intervention   55
 
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   Statut Contributeur Dernière intervention   1 846
 
Pour info : le mot "crypter" n'a aucun sens...
+1

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