Cryptage/décryptage de fichiers stockés dans une base de données [Résolu]

BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 20 sept. 2011 à 18:10 - Dernière réponse : BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention
- 22 sept. 2011 à 23:18
Hello,

Je rencontre actuellement un problème que je ne parviens pas à résoudre :
J'ai une base de données qui contient différentes informations du type "pseudo", "age", "ville", etc., ainsi que les urls des photos de chaque membre (enfin urls que je recrée suivant les données lors de la construction de ma page).

Bref, c'est justement concernant l'affichage des photos que je coince :
En fait j'essaie de crypter l'url des photos afin que celles-ci soient plus délicates à enregistrer sur n'importe quel disque dur.
Pour ce faire j'ai trouvé différents scripts qui marchent à ravir lorsqu'on déclare le chemin des photos en dur dans la page html, hors aucun de ces scripts ne fonctionne avec la récupération de mes données issues de ma BDD. Je m'interroge donc : aurai-je manqué un épisode ?

Voici par exemple un des scripts que j'utilise pour crypter :
//fonction pour crypter :
<?php
function cd($texte)
  	{
        $key = 'toto_secret';
        $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, $texte, MCRYPT_MODE_ECB, $iv));
  	}
?>
[code=php]

Le script que j'utilise pour décrypter :
[code=php]<?php

include 'cd.php';

function dec($texte)
  {
        $texte = base64_decode($texte);
        $key = 'toto_secret';
        $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, $texte, MCRYPT_MODE_ECB, $iv);
        return $decrypt;
  }
  
  $filename=$_GET["filename"];
  readfile(dec($filename));
?>


et par exemple le script de ma page principale (je vous épargne la totalité) :
include 'cryptage.php';

//là je récupère l'url de la photo à afficher suivant le pseudo du membre :
$maPhoto = "images/".utf8_encode($donnees['PSEUDO'])."/photo1.jpg";


//puis je stocke cet url dans un array qui s'incrémente lors de ma boucle :
$monTab[$NB] = $maPhoto;

//plus loin dans ma partie html j'affiche (du moins j'essaie) ma photo :

" />


Et rien à faire la photo ne s'affiche pas...
Pourtant si je teste avec ceci par exemple :
$maPhoto = "images/photo1.jpg";


Et que je passe $maPhoto dans ma balise ça marche nickel.

Bref, si vous avez une idée je suis preneur car je ne trouve pas.

Merci ;)


BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Afficher la suite 

Votre réponse

10 réponses

cod57 1660 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 21 sept. 2011 à 16:59
0
Merci
bonjour

readfile(dec($filename));
pourquoi pas
dec($filename);

Bonne programmation !
Commenter la réponse de cod57
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 21 sept. 2011 à 17:45
0
Merci
Hello cod57,

merci pour ta réponse . Je tente de voir ce que ça donne et je te tiens au courant.

A plus ,

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 21 sept. 2011 à 17:57
0
Merci
Re,

bon et bien j'ai tenté et j'ai fait choux blanc...
Perso je pige pas d'où vient le problème : j'ai inséré ma fonction contenue dans le fichier de contrôle afin de faire un echo de l'image à décrypter dans ma page et tester si le décryptage est le correct et... Le décryptage est bien correct donc je ne comprends vraiment pas.
J'ai une autre classe encryptage/décryptage que je dirai être plus puissante, j'ai évidemment testé avec celle-ci et le résultat est le même : l'image ne s'affiche pas... C'est à devenir fou !

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
cod57 1660 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 21 sept. 2011 à 20:54
0
Merci
re

j'ai realisé un petit script qui fonctionne


ecrire.php
<?php 
function dec($texte){
$texte = base64_decode($texte);
$key = 'totosecret';
$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, $texte, MCRYPT_MODE_ECB, $iv);
return $decrypt;
}

if(isset($_GET['f'])){
$f=urldecode($_GET['f']);
//echo '<hr>';
$f=dec($f); 

header('Content-Type: image/jpeg');
$f=imagecreatefromjpeg(urldecode($f));
imagejpeg($f);
imagedestroy($f);
}else{
}
?>


lire.php
<?php
function cd($texte){
$key = 'totosecret';
$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, $texte, MCRYPT_MODE_ECB, $iv));
}

echo $monTab[0]='images/toto.jpg';
echo '
';
echo $monTab[0]=urlencode($monTab[0]);
echo '
';
echo $monTab[0]=cd($monTab[0]);
echo '
'; 

?>

" />


il faut une image
images/toto.jpg


Bonne programmation !
Commenter la réponse de cod57
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 21 sept. 2011 à 22:07
0
Merci
Re cod57,

je viens d'essayer ton code et malheureusement ça ne marche toujours pas, ce qui tendrait à me confirmer ce que je commençais à me dire : le problème ne vient peut-être pas de la fonction encryptage/décryptage, mais peut-être d'ailleurs. En effet j'utilise une autre fonction d'encryptage/décryptage utilisée pour récupérer et déchiffrer les données stockées dans ma BDD, et je me dis qu'il y a peut-être un conflit ou je ne sais quoi.
Je vais donc axer mes recherches là-dessus car je ne vois plus d'autres explications, tu as retravaillé un script qui marche en "soliste" et qui ne fonctionne plus une fois inséré dans ma page. Moi-même les deux scripts que j'ai essayés marchent aussi très bien en-dehors de ma page, donc j'en conclue que le problème se trouve dans ma page et non dans les scripts testés.
En tout cas un grand merci à toi d'avoir pris du temps pour m'aider à résoudre mon soucis .
Je reposte dès que j'aurai trouvé le problème.

A plus

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
cod57 1660 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 21 sept. 2011 à 22:21
0
Merci
oui le problème doit être ailleurs
en tout je trouve pas mal cette technique pour cacher le lien réel ... ++
Bonne programmation !
Commenter la réponse de cod57
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 22 sept. 2011 à 13:12
0
Merci
Hello cod57,

effectivement le code est pas mal pour cacher l'url d'une image, d'un mp3, ou encore d'une vidéo. Si ça intéresse j'ai une classe PHP encore plus aboutie qui permet de générer des urls cryptés qui sont temporaires ; en gros tu configures le temps de vie de l'url crypté via un timestamp et à chaque fois que tu recharges la page l'url crypté sera différent mais renverra le fichier souhaité.

Quoi qu'il en soit je pense que mon problème vient de l'encodage/décodage des données dans ma BDD. Je n'avais jusqu'à présent testé que sous Safari, et en testant sous Chrome et Firefox les images ne s'affichent pas même sans cryptage de l'url, et en regardant dans le code source j'ai des caractères merdiques de ce type :
images/album/toto&#65533;&#65533;&#65533;&#65533;/1.jpg


"toto" est sensé être le nom d'un membre, nom de dossier également où se trouvent les photos respectives du membre, et comme tu le vois les 4 caractères après "toto" n'ont bien évidemment pas lieu d'être. De plus ces caractères n'apparaissent pas dans le code source sous Safari, ni sous Chrome, mais sous Firefox ils sont visibles. Donc j'en déduis que c'est de là que vient le souci.

En gros voici comment je procède :
mes données sont stockées après encryptage dans ma BDD, l'encryptage en question n'est ni plus ni moins que le script que j'ai mis dans mon 1er post.
Lors de la récupération des données dans mes pages je décrypte celles-ci et les encode en UTF8 pour les données "texte" afin d'avoir la bonne retranscription des accents (vu que pour les rentrer dans la BDD je les décode pour avoir justement les accents). Et je pense que c'est le "utf8_encode" lors de la récupération qui fout le bazar.
Je vais donc tester sans le utf8_encode, ou alors en encodant autrement, afin de ne plus avoir ces caractères.

Si tu as des suggestions pour l'encodage des données autrement qu'avec "utf8_encode" je suis preneur .

A plus ,

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 22 sept. 2011 à 13:14
0
Merci
Raah,

la baise html n'était pas appropriée... Voici ce que j'ai dans le code source :

images/album/toto����/1.jpg

Et les points d'interrogation sont en fait dans des losanges noirs.


BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 22 sept. 2011 à 13:16
0
Merci
Bon ben ça veut pas s'afficher correctement

En fait après "toto" il y a 4 points d'interrogation incrustés dans des losanges noirs.

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
BBFUNK01 1313 Messages postés jeudi 16 juillet 2009Date d'inscription 20 juin 2014 Dernière intervention - 22 sept. 2011 à 23:18
-2
Merci
Bon et bien problème résolu :

du coup j'ai refait ma base de données sans crypter les données et dorénavant ça marche au poil : je crypte les urls de mes images sans aucun souci et tout s'affiche correctement. Comme quoi à vouloir trop bien faire on se crée parfois des problèmes. Néanmoins j'ai un peu les glandes car une base de données avec des données cryptées c'est toujours plus sûr, mais vu que ça me génère des problèmes j'abandonne.

Good night ,

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.