Xor

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Xor

Message par Backup »

si j'ai bien compris (et SPH a raison ;) )

le probleme pour la formule suivante

Code : Tout sélectionner

r = c ! b
c'est lorsque c=b :)
forcement ça va sortir 0
le probleme c'est que ça va sortir 0 quelque soit la valeur des termes c ou b
s'ils sont egaux , c'est la mouise :)
parcequ'au decodage , on va tomber sur '0' , et on ne pourra pas retrouver le code d'origine :)

en effet ... qu'on fasse

255!255
52!52
65!65

les 3 seront egal a 0 ...

alors la question .. comment éviter qu'on se retrouve avec c=b ?? :

Code : Tout sélectionner

; peut etre un if
; bon allons y 
if c<>b
r = c ! b ; on encode seulement si c <> b  :o)
endif
mais alors qu’advient 'il si c=b ??
ben .. on ne le code pas ; on ecrit la valeur tel quel :)

et au decodage ,
il suffirai alors de tester aussi , si c<>b pour faire le Xor (le decodage )
sinon , on ecrit la valeur tel quel :)

voila la soluce ... :)
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

Voila ! Tu as su decrire ce que j'ai essayé d'expliquer sans y arriver. Mais j'ai eu tord dans mon raisonnement, je le reconnais... :oops:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Xor

Message par Backup »

au passage , le Xor est tres efficace avec des clef longue ... tres longue (la taille du fichier a encoder ) car ..

je vais prendre ici le fameux exemple des images X qui etaient données dans certains CD ROm de magasines de jeux Videos ..

il fallait appeler le 3615 code ... a X Francs la minutes ...pour avoir la clef de décodage pour chaque image ...

le probleme pour ces images Codé en XOR
c'est que les gars codaient avec une clef courte de quelques caracteres ..

or , Xor a une faiblesse connue que voici

Message en clair XOR Clef = Message Codé ... pour le moment tout vas bien .... sauf que ...

Message Codé XOR Message en clair = Clef !! :D ... excellent non ? :lol:


ce qui veux dire que , si on connais une partie du message en clair ... ce qui est le cas pour une image Jpg
son entete est sensiblement toujours pareil :)

il suffit de faire Image_codé XOR "FFD8FFE000104A46494600010100012C012C0000FF" (entete standard d'un jpg ) =====> le debut de la CLef (voir toute la clef .. ) apparait en clair !!

si la clef est moins longue que notre entete , on peut décoder toute l'image
car si la clef est courte cela veux dire qu'elle a été utilisé de façon repetitive sur toute l'image (le message ) codé ;)

donc Xor est efficace seulement si la clef est aussi longue que le fichier a encoder
et qu'on ne connais pas le type de message en clair .... :)

et bien sur ne pas utiliser un poeme celebre comme clef , car meme si on ne retrouve que quelques mots , la déduction de la clef sera facile :)

il existe meme des algo qui utilise les Statistiques d'apparition des caracteres dans un langue donné
pour prédire la clef ...
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

On en a meme fait des concours de decryptage ici meme si tu te rappelles... :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Xor

Message par Backup »

c'est mon grand age , qui me fait radoter :lol:
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Xor

Message par Golfy »

SPH a écrit :
Golfy a écrit :
SPH a écrit :Je me suis gourré sur toute la ligne. Bon, alors je vais contourner le probleme (ca m'arrange pas) :cry:
Au lieu de présenter un algorithme en disant que ça ne marche pas, peux-tu expliquer la fonction que tu souhaites réaliser ?
Bon je rentre chez moi :roll:
C'est pour mon hypercrypttchat. Il bug dans un cas : quand les xor finissent par donner 0 (si tu n'as rien pigé, c'est pas grave, c'est technique)

Bon, je me fais tout petit, vous permettez ?
Alors en fait (comme la dit Dobro parce j'ai triché et lu le forum à l'envers) il faut éviter la valeur identique au deuxième terme de ton XOR.
Plutôt que de faire un test sur une valeur utilisé, ne peux-tu pas utiliser un terme improbable ?
Exemple : tu prends un mot de passe. Tu appliques dessus un codage de César (décalage de lettres) permettant de tomber : soit sur les codes < 32 (non affichable et utilisable dans un chat... mais gare au chr(10), chr(13)...) soit au-dessus des caractères que tu veux utiliser (cette fois, gare aux accents).

Ainsi en appliquant ton XOR sur ton message avec ta clé tu ne devrais pas tomber sur une valeur nulle...

Code : Tout sélectionner

; exemple by Golfy 2012-09
message$ = "azerty"
clef$="hello"
clefapplique$=""
messagecode$=""

; je 'code' la clé pour ne pas avoir de caractère que j'utilise dans mes messages
For t=1 To Len(clef$)
	clefapplique$+Chr(Val(Mid(clef$,t,1))+141)
Next t
Debug "["+clefapplique$+"]"

; je xorise mon message
x=1
For t=1 To Len(message$)
	messagecode$ + Chr(Asc(Mid(message$,t,1)) ! Asc(Mid(clefapplique$,x,1)))
	x+1
	If x>Len(clefapplique$)
		x=1
	EndIf
Next t
Debug "["+messagecode$+"]"
Et je ne suis pas faché mais comme me l'a appris un tuteur il y a presque vint ans : "quand tu cherches l'origine d'une erreur et que tu trouves une autre cause d'erreur, commence par corriger celle-ci même si elle n'a aucun rapport en apparence avec ton problème"

Espérant t'avoir aidé,
Golfy

PS: ton cryptochat bug sur la valeur NULLE ? est-ce parce que tu utilises des chaines de caractères ? les BASIC considèrent que le caractère NULL est le terminateur de la chaine. La solution : utiliser des MALLOC (dans une liste chainé avec une structure pour conserver la longueur)

Code : Tout sélectionner

;- Structures
Structure Vmsg
  Src.s
	Len.i
	*cmd
	Good.a
EndStructure


;- Variables
Global *BSin = AllocateMemory(4096)
Global NewList msg2velbus.Vmsg()
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Xor

Message par SPH »

je vais reflechir. D'ailleurs, je devrais condamné les 13 premiers chr et pas seulement le 0...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre