IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Chiffrer / déchiffrer une variable


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Points : 64
    Points
    64
    Par défaut Chiffrer / déchiffrer une variable
    Bonjour,

    J'ai actuellement besoin de crypter / décrypter une variable afin de cacher le répertoire et nom d'une image; que je fais passer dans une url (image.php?image=$var) mais je n'arrives pas à trouver une fonction qui soit efficace à 100%.

    Actuellement j'ai ceci, mais ca donne des caractères bizarre et le decryptage ne s'effectues donc pas correctement. Le code ci-dessous, fonctionne parfois, parfois pas ...

    Une solution peut etre, meme si ce n'est pas celle ci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function crypter($need) {
    	$key = "x9f5h1t8y9";
    	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    	return mcrypt_encrypt(MCRYPT_XTEA, $key, $need, MCRYPT_MODE_ECB, $iv);
    }
     
    function decrypter($need) {
    	$key = "x9f5h1t8y9";
    	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
     
    	$decrypt = mcrypt_decrypt(MCRYPT_XTEA, $key, $need, MCRYPT_MODE_ECB, $iv);
     
    	return substr($decrypt,0,strlen($decrypt)-2);
    }

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 393
    Points : 15 754
    Points
    15 754
    Par défaut
    quand tu fais fait passer l'information chiffrée dans l'URL, essaye d'utiliser les fonctions http://php.net/base64_encode et http://php.net/base64_decode

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    J'avais pensé à cette fonction base64, le seul problème est que n'importe qui peut décoder l'encodage fait avec cette fonction (du moins pour les curieux).

    J'aurai besoin d'une méthode avec une clef qui ne soit pas visible afin de cacher absolument l'url absolue de l'image.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 393
    Points : 15 754
    Points
    15 754
    Par défaut
    je ne pensais pas encoder directement le nom de l'image mais encoder la valeur chiffrée que tu obtiens avec ta fonction
    comme ça il n'y aura pas de problème pour la transmettre par l'URL

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    Ben c'est ce que j'avais fais au debut mais même ainsi, ca n'as pas l'air de fonctionner à tout le coup. En gros j'ai parfois un, parfois deux caractères bizarre à la fin de la variable décryptée (espèce de losange avec un ? dedans).

    A la fin de la fonction decrypter, j'ai mis "return substr($decrypt,0,strlen($decrypt)-2);" pour faire sauter ces deux caractères , mais comme j'ai dis, c'est pas toujours deux caractères qui ont l'air de foirer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function crypter($need) {
    	$key = "x9f5h1t8y9";
    	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    	return base64_encode(mcrypt_encrypt(MCRYPT_XTEA, $key, $need, MCRYPT_MODE_ECB, $iv));
    }
     
    function decrypter($need) {
    	$need = base64_decode($need);
    	$key = "x9f5h1t8y9";
    	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
     
    	$decrypt = mcrypt_decrypt(MCRYPT_XTEA, $key, $need, MCRYPT_MODE_ECB, $iv);
     
    	return substr($decrypt,0,strlen($decrypt)-2);
    }

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    A force de faire des essais, j'ai trouvé ce qui clochait :

    Le signe '+' était zappé lors de la récupération de la variable dans image.php :

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1/image.php?image=2JY4hJHtfJcC0OpTtwmD167feTEo8YAiXG2M3h0shk+3u9tF9XzYcQ==
    Donc dans image.php j'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $image = decrypter(str_replace(' ','+',$_GET['image']));
    Et ceci au niveau des fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function crypter($need) {
    	$key = "x9f5h1t8y9";
    	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    	return base64_encode(mcrypt_encrypt(MCRYPT_XTEA, $key, $need, MCRYPT_MODE_ECB, $iv));
    }
     
    function decrypter($need) {
    	$need = base64_decode($need);
    	$key = "x9f5h1t8y9";
    	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    	$decrypt = mcrypt_decrypt(MCRYPT_XTEA, $key, $need, MCRYPT_MODE_ECB, $iv);
    	return $decrypt;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  4. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo