Cryptage

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Cryptage

par alheskandre » 20 janv. 2007, 23:56

Alors ca, je n'y avais pas pensé! Que je suis con mdr!!

Merci beaucoup....

par Ripat » 20 janv. 2007, 19:39

Si tu encodes ton texte crypté en base 64, tu dois le décoder avant de le décrypter.
function rijndael_decrypt($data, $key){

	// décodage des caractères
	$data = base64_decode($data);

	$iv_size  = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
	$iv = substr('abcdefghijklmnopqrstuvwxyz', 0, $iv_size); 
	$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'','cbc','');
	mcrypt_generic_init($cipher, $key, $iv);
	echo '<br>decrypt iv: '.$iv."($iv_size) key: ".$key.' data: '.$data.' <br>';
	$decrypted = mdecrypt_generic($cipher, $data);
	mcrypt_generic_deinit($cipher);

	// suppression des espaces exédentaires générés par le decrypt
	return trim($decrypted);

}

par BeRoots » 20 janv. 2007, 17:56

à mon avis ta longueur de clé ou de ton vecteur sont erronés... :-k

lance le script fournis par ripat pour testé les mode de cryptage et assure toi que ton mode (rijndael) utilisé utilise bien une clé et un vecteur de la bonne longueur.

par alheskandre » 19 janv. 2007, 20:00

ta classe est pas mal, j'y est jeté un coup d'oeil...
Il manque un truc qui serait sympa, c'est que tu donne un IV et que si c'est trop longt, ca te la coupe.... Comme en delphi...

Sinon, en utilisant les nouvelles fonction de cryptage comme ceci:

    <?php
	function rijndael_crypt($data, $key)
    {

	
	  

 $iv_size  = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
	  $iv = substr('abcdefghijklmnopqrstuvwxyz', 0, $iv_size); 

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'','cbc','');

mcrypt_generic_init($cipher, $key, $iv);
	  	  echo '<br>decrypt iv: '.$iv.' key: '.$key.' data: '.$data.' <br>';
$encrypted = mcrypt_generic($cipher,$data);
mcrypt_generic_deinit($cipher);



      return base64_encode($encrypted);
   
   
   
   }
   
   
   	function rijndael_decrypt($data, $key)
    {

	

 $iv_size  = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
	  $iv = substr('abcdefghijklmnopqrstuvwxyz', 0, $iv_size); 

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'','cbc','');


mcrypt_generic_init($cipher, $key, $iv);
	  	  echo '<br>decrypt iv: '.$iv.' key: '.$key.' data: '.$data.' <br>';
$decrypted = mdecrypt_generic($cipher,$data);
mcrypt_generic_deinit($cipher);



	   return base64_encode($decrypted);
   
   }
   
    echo '<br>Cryptage<br>';
	$crypted = rijndael_crypt('alexandre','lol');
	echo $crypted;
	echo '<br>Decryptage...<BR>';
	$decrypted = rijndael_decrypt($crypted, 'lol');
	echo '<br> decrypted :'.$decrypted;


    ?>
Le script me renvoie
Cryptage

decrypt iv: abcdefghijklmnop key: lol data: alexandre
4qp0Z4tQbUBR9scqhESiRw==
Decryptage...

decrypt iv: abcdefghijklmnop key: lol data: 4qp0Z4tQbUBR9scqhESiRw==

decrypted :1QOIm5EiRbhAA65XY0+Jkir6+3vgMfOwL1r6Q8ku86c=
Il n'arrive toujour pas a decrypter... pourtant, tout est pareil, IV, clé, et j'ai bien verifié, quand je decrypte ce que renvoie ma fonction de cryptage avec un prog que j'ai fait sous windows, ca marche...

Je ne comprend vraiment pas pourquoi il ne veut pas décrypter... :tir2:

par Ouaibou » 19 janv. 2007, 13:46

---

par BeRoots » 18 janv. 2007, 23:37

regarde le tuto de ripat sur le site php france

y'a plus qu'a le suivre à la lettre et tout fonctionnera ;)

petit info supplementaire:
j'ai remarqué que lorsqu'on est connecter à mysql, il y a un bug qui fait foirer les cryptage ou decryptage... Donc la seul precaution sera de crypter et decrypter avant de te connecter à mysql :roll:

voila, tu verra le tuto est on ne peut plus claire, simple et efficace :)

par zeus » 18 janv. 2007, 20:37

Tout a fait d'accord, mais comme tu n'est pas enregistré, comment savoir si c'est ton message ou celui d'un autre ;)

Sinon, pas mieux qu'Hubert

par alheskandre » 18 janv. 2007, 20:29

Merci pour ton conseil,
et si je disais que je ne pouvais pas editer, c'est parceque, je ne suis pas enregistrern donc logique que je ne puisse pas editer mon propre message...
A ma connaissance un forum dont les utilisateurs editent leurs propre message, c'est pas vraiment un wiki :/

par Hubert Roksor » 18 janv. 2007, 19:40

Dommage, je ne peut pas editer...
Erm, ce n'est pas un wiki, seuls les utilisateurs enregistrés peuvent éditer leurs messages.

Au fait, je ne connais pas mcrypt mais je viens de cliquer sur le nom des fonctions et le manuel dit
mcrypt_cbc() ne doit plus être utilisée. Vous pouvez la remplacer par mcrypt_generic() et mdecrypt_generic().
Donc réécrire tes fonctions sur les conseils du manuel serait un bon début je pense.

par alheskandre » 18 janv. 2007, 19:25

Dommage, je ne peut pas editer...
Enfin, l'information que je voulais ajouter, c'est que le scripte retourne ca:

[quote]Cryptage
4qp0Z4tQbUBR9scqhESiRw==
Decryptage...
1ƒr¼

Cryptage

par alheskandre » 18 janv. 2007, 19:01

Bonjour, voici mon probleme, j'ai fait 2 fonction, une pour crypter, l'autre pour decrypter, malheuresement, seulement le cryptage marche...
voici le code
    <?php
	function rijndael_crypt($data, $key)
    {

	
      $key = 'lol';
     // $iv = 'abcdefghijklmnopqrstuvwxyz';
      $data = 'alexandre';
	  
	  $iv_size  = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
	  $iv = substr('abcdefghijklmnopqrstuvwxyz', 0, $iv_size); 
      $encryptedcbc = mcrypt_cbc(MCRYPT_RIJNDAEL_128,$key,$data,MCRYPT_ENCRYPT,$iv);

      return base64_encode($encryptedcbc);
   
   
   
   }
   
   
   	function rijndael_decrypt($data, $key)
    {

	
      $key = 'lol';
     // $iv = 'abcdefghijklmnopqrstuvwxyz';
      $data = 'alexandre';
	  
	  $iv_size  = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
	  $iv = substr('abcdefghijklmnopqrstuvwxyz', 0, $iv_size); 
      $decryptedcbc = mcrypt_cbc(MCRYPT_RIJNDAEL_128,$key,$data, MCRYPT_DECRYPT,$iv);

	  // return base64_encode($decryptedcbc);
   return  $decryptedcbc;
   
   }
   
    echo 'Cryptage<br>';
	$crypted = rijndael_crypt('alexandre','lol');
	echo $crypted;
	echo '<br>Decryptage...<BR>';
	$decrypted = rijndael_decrypt($crypted, 'lol');
	echo $decrypted;
	

    ?>
Merci!