begin process at 2012 05 30 21:05:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

Fonction PHP - XOR


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fonction PHP - XOR

jeudi 10 juin 2010 à 01:12:17 | Fonction PHP - XOR

jarodjarod

bonsoir à tous,

Voilà, j'utilise téléchargé un code source de stéganographie en php, j'ai pas compris une fonction de XOR, je veux dire son utilité, la voici :

/*
* This function applies a XOR operation to a string
* Return : The xored string
*/
function XorString($string,$passphrase) {
$return="";

for($i=0;$i<strlen($string);$i++)
$return.=$string[$i]^$passphrase[$i%strlen($passphrase)];

return $return;
}

dans les commentaire, je sais, ca dit que c'est une fonction qui applique un XOR sur une chaine de caractére, et retourne une chaine xoré, MAIS JE COMPREND PAS PKOI, apres que la chaine soit xoré, qu'est ce qu'on a gagné, c koi xoré deja, et c koi l'utilité du XOR.

Enfin, J'espere que j'été clair.
Merci bcp de vos réponse mes amis.
jeudi 10 juin 2010 à 09:14:46 | Re : Fonction PHP - XOR

TychoBrahe

Réponse acceptée !
Salut,

Le chiffrage dit "xor" est un type de chiffrage très basique et peu sécurisé. Cette fonction permet de chiffrer une chaîne de cette manière.

Petit retour sur l'opérateur logique xor (^) :
En mémoire, toutes les données sont représentées sur un certain nombre d'octets, eux même composés de 8 bits (valant chacun 0 ou 1). L'opérateur xor est un opérateur bit à bit qui répond à la table de vérité suivante :
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
C'est le ou exclusif, il faut que un des opérandes soit vrai mais pas les deux. Cette opération à une propriété bien pratique : en ré-appliquant le même xor on retrouve la donnée originale. Prenons l'exemple d'une suite d'un octet chiffré bit à bit en fonction d'un autre octet :

Donnée initiale : 00101101
masque binaire utilisé pour chiffrer cet octet : 11101001

Code :
   00101101
 ^ 11101001
------------
   11000101

On obtient un résultat qui est notre donnée chiffrée. Si on ré-applique le même xor sur ce résultat :
Code :
   11000101
 ^ 11101001
------------
   00101100

On a bien retrouvé la chaîne d'origine.

Maintenant considérons une chaîne de caractère que nous allons chiffrer avec un xor d'une taille d'un caractère. Chaque caractère étant une série de bit de même taille que notre masque binaire, on applique ce masque a chaque caractère 1 à 1 afin d'obtenir la chaîne chiffrée. Ça fonctionne, mais niveau sécurité c'est proche de la nulité, un tel chiffrage se casse par force brute en quelques secondes. Ici ta fonction permet de chiffrer non pas avec 1 seul caractère comme masque, mais toute une chaîne (c'est plus sécurisé mais reste loin d'un véritable chiffrage).

Analysons la fonction que tu montres :
function XorString($string,$passphrase)
Cette fonction chiffre donc $string en utilisant $passphrase comme masque binaire.

$return="";
C'est dans cette variable que l'on stocke la chaîne chiffrée.

for($i=0;$i<strlen($string);$i++)
On tourne pour chaque caractère de la chaîne de base.

$return.=$string[$i]^$passphrase[$i%strlen($passphrase)];[/ib]
Donc pour chaque caractère, on applique le masque et on le concatène à la chaîne de retour.

[i]return $return;

Il n'y a plus qu'a retournée la chaîne de retour.

Revenons sur l'application du xor :
$string[$i]^$passphrase[$i%strlen($passphrase)]
$string[$i] est le caractère de la chaîne $string à la position $i.
^ est l'opérateur xor
$passphrase[$i%strlen($passphrase)] est le caractère de la chaîne $passphrase à la position $i%strlen($passphrase). Pourquoi choisir $i%strlen($passphrase) ? Simplement parce que l'on ne chiffre pas avec 1 seul caractère mais potentiellement bien plus. Si la chaîne servant de masque est plus courte que la chaîne a chiffrer, il faut la reprendre au début. Ce calcul permet d'obtenir le bon caractère à utiliser.

Une petite remarque juste comme ça : c'est pas top de laisser les strlen() dans des boucles, ça nécessite de recalculer la longueur des chaînes à chaque fois. Calculer la longueur des deux chaînes une seule au début économisera beaucoup de temps d'exécution.
jeudi 10 juin 2010 à 11:11:38 | Re : Fonction PHP - XOR

jarodjarod

Bonjour TychoBrahe,

Merci bcp pour tes explication, j'ai bien compris l'utilité du ou exclusif maintenant.

Bonne journée mon ami.


Cette discussion est classée dans : fonction, php, string, return, xor


Répondre à ce message

Sujets en rapport avec ce message

SPLIT [ par fatNugly ] y'a t'il une fonction en php qui fait la meme chose que la fonction split en vb soitune fonction a laquelle on donne le nom du string ansi que le cara Return-Path [ par tardigrade ] Bonjour à tous,J'ai un problème de Return-Path lorsque j'utilise la fonction mail() de PHP.Lorsque que je passe au paramètre haeder de la fonction la Cryptage !!??!! [ par vincenteraptor ] UGH!Comment va les PHPCSusers???J ai un pb : j aimerai savoir deux petites choses à propos de cryptage :- Existe t il des fonction de cryptage réversi fonction [ par eax ] salutations!je cherche la fonction en javascript qui serait équivalente à la fonction ereg_replace() en phpmerci Sylvain [<a href="mailto:bitsenfolie@ Fonction Get [ par J4ck ] Salut j'ai essayer de faire un editeur par selection ce que je veux dire par la c'est que le manager select son object dans un select box une fois cho Fonction PHP : Convertir un code VB en HTML [ par microdav ] Bonjour,Je recherche une fonction PHP pour convertir un code VB en code HTML avec respect des couleurs.Quelqu'un a t il cela en stock s'il vous plait Envoyer un mail() [ par amosc ] Salut tout le monde;Je n arrive pas a envoyer un mail en php j ai ecrit la fonction de cette facon :mail("Amos93@lbn.com","sujet","test");et on me ren Question sur formulaire en php et controle en js [ par jagdjg ] Je vais essayer d'expliquer: j ai donc un formulaire qui est controle par une fonction javascript, jusque la tout va bien.Le probleme c est que je gen fonction php pour inserer mots avec caractères dans bdd [ par nunor ] bonjour, Quand j' insere les mots - chambres d'enfants - canapé convertible quelles sont les fonctions que l'on utilise pour les inserer dans BDDonnée appel et récupération du résultat de la fonction [ par gwady ] Bonjour,Je voudrais savoir si ce que je fais est correte car ma page est vide. J'ai un 4 fichier dont deux qui me permettent de faire ma connexion à m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales