Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14

Discussione: Problemozzo con mcrypt

  1. #11
    Ho provato anche a cambiare cri.php e fare cosi':

    codice:
    <?
    	$chiave = "Chiave assai sicura";
    
    	function Rev_Crypt($text)
    	{
    		global $chiave;
    		$td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');
    		$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    		$ks = mcrypt_enc_get_key_size ($td);
    		$k = substr (md5 ($chiave), 0, $ks);
    		mcrypt_generic_init ($td, $k, $iv);
    		$encrypted = mcrypt_generic ($td, $text);
    		mcrypt_generic_deinit ($td);
    		mcrypt_module_close ($td);
    		return $encrypted;
    	}
    
    	function Rev_Decrypt($enc)
    	{
    		global $chiave;
    		$td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');
    		$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    		$ks = mcrypt_enc_get_key_size ($td);
    		$k = substr (md5 ($chiave), 0, $ks);
    		mcrypt_generic_init ($td, $k, $iv);
    		$decrypted = mdecrypt_generic ($td, $enc);
    		mcrypt_generic_deinit ($td);
    		mcrypt_module_close ($td);		
    		return $decrypted;
    	} 
    ?>
    usando sostanzialmente l'esempio preso dal sito di PHP.
    In questo modo non si decifra neanche una parte della stringa, ma sia in index.php che in read.php la stringa decrittata e' una serie di simboli strani

    Non ce la faccio piu', mi sa che lascero' le cose in chiaro, e mi limitero' a crittare la password con la vecchia crypt

    Ciao
    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Ciao,

    Ho fatto un po' di prove pure io. Mi pare che il problema si possa localizzare nel file che includi cri.php (forse ).

    Se metti le due pagine assieme funziona tutto. In pagine separate no, sbaglia sempre i primi 8 chrs. ho dovuto modificare MCRYPT_DEV_RANDOM perchè provo su windows XP, uso:

    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    Prova la pagina così:
    codice:
    <?
      include("cri.php");
      $cri = Rev_Crypt("Questa è Una stringa crittata asdasd");
      $enc = base64_encode($cri);
    
      $f = fopen("prova.txt", "w");
      fputs($f, $enc);
      fclose($f);
    
      echo "Stringa Rev_crypt: $cri (len ".strlen($cri).")
    \n";
      echo "Stringa crittata base64: ".base64_encode($cri)." (len ".strlen(base64_encode($cri)).")
    \n";
      echo "Stringa decrittata: ".Rev_Decrypt(base64_decode($enc))." (len ". strlen(Rev_Decrypt(base64_decode($enc)))
    .")
    \n";
    
    echo "
    
    Leggi
    \n";
    
    echo "
    ***** lettura *****
    ";
    
      $f = fopen("prova.txt", "rb");
      $enc1 = rtrim(fgets($f));
      $enc2 = base64_decode($enc1);
      $enc3 = Rev_Decrypt($enc2);
      fclose($f);
    
      echo "Stringa salvata encode64: $enc (len ".strlen($enc1).")
    \n";
      echo "Stringa decode64: $enc2 (len ".strlen($enc2).")
    \n";
      echo "Stringa decrittata: $enc3 (len ". strlen($enc3).")
    \n";
    
    ?>
    Ho aggiunto rtrim ad fgets() perchè estrae un carattere di fine riga o new line che sia. Aumenta di uno la lunghezza della stringa.

    Come potrai vedere nella stessa pagina funziona. Se la parte di lettura la metti in una pagina diversa come hai presentato tu sopra, invece sbaglia i primi 8 chars.

    Può essere il problema in qualche valore che assume diversamente la seconda esecuzione del file cri.php. E' l'unica diversità di esecuzione la ripresa di cri.php.

    Se avrò tempo nei prossimi giorni farò altre prove su linux.


  3. #13
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Come supponevo il problema è nel file cri.php. Richiamandolo nella seconda pagina rende una chiave diversa di criptazione. Si può ovviare con l'uso delle sessioni e con due diversi file da includere:

    file index.php
    codice:
    <?
    session_start();
      include("cri.php");
    ..... il resto identico.
    file read.php
    codice:
    <?
    session_start();
      include("cri1.php");
    ..... il resto identico.
    file cri.php da usare solo per la pagina index.php
    codice:
    <?
      $key = "Chiave assai sicura";
    
      srand((double)microtime()*1000000);  //per windows
      $iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_CFB);
      $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    
      $_SESSION['cri'] = $iv;
    ..... il resto identico.
    file cri1.php da usare in tutte le altre pagine con session_start()
    codice:
    <?
      $key = "Chiave assai sicura";
    
      $iv = $_SESSION['cri'];
    
      $ksize = mcrypt_get_key_size('xtea', 'cfb');
      $key = substr(md5($key), 0, $ksize);
    ..... il resto identico.
    In questo modo si usa lo stesso valore iv creato nella prima pagina di encode e tutto funziona bene.

    Ciao.


  4. #14
    Teoricamente l'IV deve cambiare ogni volta.
    E' la chiave che rimane uguale.

    Quando salvi un dato crittato sul database, cosa fai? Salvi anche l'IV? No, salvi solo i dati crittati.

    L'iv deve essere random, e non e' un problema se varia ogni volta.

    Comunque avevo gia dimostrato che la chiave rimane uguale anche su due pagine diverse:

    Pagina 1
    Key: f434ea72e7239c47
    Pagina 2
    Key: f434ea72e7239c47
    Non e' quello il problema.

    Comunque ho provato a fare come dicevi: mettendo tutto in una pagina non cambia assolutamente nulla.

    Tanto per aggiungere qualcosa: ho provato anche a tenere l'IV costante e non cambia niente.

    Ciao
    #exclude <windows.h>
    Powered by Gentoo GNU/Linux
    Cos'e' l'impossibile se non una questione di tempo?
    Riesumare i post vecchi non e' sbagliato, e' una risposta o la continuazione di un thread. Meglio riesumare che creare di nuovi :]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.