Problème dans l'enregistrement d'un fichier après simple cryptage xor.

Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009 - 7 oct. 2006 à 11:04
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009 - 8 oct. 2006 à 18:58
Bonjour,
J'ai réalisé un programme juste pour voir comment fonctionnait le cryptage xor. Il demande un fichier source, le fichier dest et une clé < 64 car.
Le tout fonctionne très bien mais j'obtiens dans le fichier crypté des caractères non ASCII, d'écriture chinoise. Ce ne me pose pas de problème, seulement je me demande si ce fichier, une fois transféré sur un otre os que windows pourra être décrypté de la même façon.
Comment se fait-il qu'un char qui normalement a une valeur comprise entre -127 et 127 puisse avoir de tels caractères?
C'est très étrange, surtout que, lors du débogage il ne me semblait pas avoir vu de caractères dépassant ces valeurs.

Merci encore.

13 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2006 à 11:12
Caractère non ascii ???
Un octet peut prendre 256 valeurs et basta, je ne vois pas où est le problème.

ciao...
BruNews, MVP VC++
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
7 oct. 2006 à 11:23
Comment expliquer que je n'en obtiens pas un seul;
Vous allez peut-être me dire que ça : ?????

????????
????????
????????
???? ce sont de ASCII ?
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
7 oct. 2006 à 11:23
Tiens, ils ne passent même pas le forum
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
7 oct. 2006 à 11:24
Pour précision, il s'agissait de caractères que je n'avais encore jamais vu, et ds le fichier PAS un seul n'était en ASCII.
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2006 à 11:36
Cesse de flooder le forum en disant nimporte quoi et réfléchis un peu.
Si tu fais du xor sur un octet, rien ne dit qu'on obtiendra un résultat sur une plage de caractère affichable, fichier résultant n'a pas à être édité. Passe le au même xor dans l'autre sens et il devrait reprendre son état initial.

ciao...
BruNews, MVP VC++
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
7 oct. 2006 à 11:53
Oui Brunews a raison, regarde une table de valeurs ASCII (->google), il y a plein de caractères
"bizarres". Seule une infime partie fait partie des chiffres et des
lettres. (26*2 + accents + 10 par rapport à 256...).


a caractère nomal, b n'importe quel caractere.

a = a xor b; // a a toutes les chances de devenir "illisible"

a = a xor b; // a redevient ce qu'il était
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
7 oct. 2006 à 12:25
Je connais très bien la tables ASCII. Merci de me faire remarquer qu'il existe d'autres caractères que les alphanumériques, mais ça je le savais déjà. En effet, lorsque j'effectue la fonction inverse je retrouve le fichier, mais là n'est pas la question. C'est : comment se fait-il que j'obtienne des caractères chinois NON ASCII (je sais de quoi je parle) dans mon fichier, alors qu'il a été enregistré avec des chars.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2006 à 12:32
Mais enfin on n'y croit pas !!!
Caractères chinois sont sur 2 octets (UNICODE) donc aucun risque que tu en aies sur char (1 octet).
Table ascci étendue couvre sur 8 bits (1 octet), il est donc clair que dans un char tu as PAR FORCE une valeur ascii.

Faut savoir sortir et se débarrasser des faux concepts issus d'une trop longue pratique des faux langages.

ciao...
BruNews, MVP VC++
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
7 oct. 2006 à 12:48
C'est peut-etre ton afficheur de caractères.
Si un caractère sur un octet n'est pas "normal" alors qu'en le prenant sur 2 octets il est "normal" mais chinois, l'afficheur le traitera peut-etre sur 2 octets.

Ca donne quoi avec NotePad ou WordPad ?

En ce qui concerne le decryptage il ne peut pas y avoir de probleme car ton programme traite les données de la meme facon que pour le cryptage, enfin j'espere ;).
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
7 oct. 2006 à 12:55
Ca y est ! J'ai trouvé.
En fait il s'agit d'une interprétation différente des caractères du Bloc-Notes. En fait, je développe sous Vista et le notepad doit certainement interpréter le fichier comme unicode. J'ai vérifié en utilisant un éditeur hex, et heureusement, c'est tout ce qu'il y a de plus normal pour un fichier binaire.
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
7 oct. 2006 à 12:57
Oué c comme tu dis Galmiza, ça dépend de l'afficheur. Même si je sais qu'ils ne sont pas prévus pour l'édition des fichiers binaires, je les utilise juste pour comparer rapidement deux en-têtes de fichiers.
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
8 oct. 2006 à 17:59
Salut,

Je viens de voir ton message... Effectivement c'est un comportement connu du bloc-note, sous Xp il fait la même chose.

Par contre je crois que tu n'as pas tout a fait saisi la différence entre stocage et interprétation... Un fichier binaire ça reste rien d'autre qu'un amas de bits, après c'est au programme destiné à son emploi de savoir de quelle manière il va le lire, et quelle interprétation il fera de ce qu'il vient de lire.

++

eRoZion
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
8 oct. 2006 à 18:58
Par "fichier binaire", j'entend tous les fichiers contenant des caractères autres que les alpha-numériques et ceux de mise en forme (cr, nl....)
0
Rejoignez-nous