Page 1 sur 1

chiffrer un message de manière amusante en Xor

Posté : 01 janv. 2012, 19:05
par Jim125
Voilà, j'ai écrit une simple ligne pour chiffrer un message avec la fonction Xor :

Mais j'ai fait en sorte que chaque lettre donne un résultat différent à chaque fois, sinon c'est trop facile à déchiffrer.
Voilà, critiques, remarques et améliorations bienvenues. Si ça peut aider un débutant... :)

Code : Tout sélectionner

$texte="aaabcdeee"; $j=1;for($i=0;$i<strlen($texte);$i++){$mess_chiffre.= chr(ord($texte[$i])^($j*3));$j++;if($j==9){$j=1;};} echo $mess_chiffre;
Le résultat est pour la chaîne aaabcdeee est : bghnlvp}f

a donne b
a donne g
a donne h
b donne n
c donne l
d donne v
e donne p
e donne }
e donne f

Re: chiffrer un message de manière amusante en Xor

Posté : 01 janv. 2012, 19:07
par Jim125
Le déchiffreur :

Code : Tout sélectionner

$texte="SRUWUS]\_"; $j=1;for($i=0;$i<strlen($texte);$i++){$mess_dechiffre.= chr(ord($texte[$i])^($j*3));$j++;if($j==9){$j=1;};} echo $mess_dechiffre;

Re: chiffrer un message de manière amusante en Xor

Posté : 01 janv. 2012, 20:16
par sirakawa
[quote="Jim125"]Voilà, j'ai écrit une simple ligne pour chiffrer un message avec la fonction Xor :

Mais j'ai fait en sorte que chaque lettre donne un résultat différent à chaque fois, sinon c'est trop facile à déchiffrer.
Voilà, critiques, remarques et améliorations bienvenues. Si ça peut aider un débutant... :)

Code : Tout sélectionner

$mess_chiffre .= chr(ord($texte[$i])^($j*3));
Il serait bon de préciser que ^ est un opérateur sur les bits
http://fr2.php.net/manual/fr/language.o ... itwise.php
surtout que trouver la page en question du manuel ne coule pas de source.
J'avais fait un truc analogue en utilisant une fonction différente suivant la place de la lettre dans le mot.

Re: chiffrer un message de manière amusante en Xor

Posté : 01 janv. 2012, 20:59
par Jim125
Pour faire simple, l'opération Xor (Ou exclusif) sur un nombre est réversible.
6 xor 5 = 3

3 xor 5 = 6
c'est ce qui permet de chiffrer/déchiffrer. Mais il faut chiffrer chaque lettre avec une valeur différente,
car si le "a" devient à chaque fois un "f" et le "b" devient à chaque fois un "h", ça prends 10 secondes à déchiffrer.
J'ai donc fait varier la valeur de 3 à 27 afin que ce soit assez difficile de retrouver le texte de départ... :)

La cigale, ayant chanté tout l'été, se trouva fort dépourvue quand la bise fût venue...

devient, une fois chiffré:

Og)ofuttf*)mvs{l#eamaf3}be|xj)5lls},c53}be|xj)a>fgjy{w.4#ul,{`zmug)j``a8g lmlga}8vfy}d`}#w|mav5tb&ke|w5~%sje}q.l#plbzw;6-