<?php

session_start();

function my_encrypt($string,$key) {
   srand((double) microtime() * 1000000); //for sake of MCRYPT_RAND
   $key = md5($key); //to improve variance
  /* Open module, and create IV */
  $td = mcrypt_module_open('rijndael_256', '','cfb', '');
  $key = substr($key, 0, mcrypt_enc_get_key_size($td));
  $iv_size = mcrypt_enc_get_iv_size($td);
  $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  /* Initialize encryption handle */
   if (mcrypt_generic_init($td, $key, $iv) != -1) {

     /* Encrypt data */
     $c_t = mcrypt_generic($td, $string);
     mcrypt_generic_deinit($td);
     mcrypt_module_close($td);
       $c_t = $iv.$c_t;
       return $c_t;
   } //end if
}

function my_decrypt($string,$key) {
   $key = md5($key); //to improve variance
  /* Open module, and create IV */
  $td = mcrypt_module_open('rijndael_256', '','cfb', '');
  $key = substr($key, 0, mcrypt_enc_get_key_size($td));
  $iv_size = mcrypt_enc_get_iv_size($td);
  $iv = substr($string,0,$iv_size);
  $string = substr($string,$iv_size);
  /* Initialize encryption handle */
   if (mcrypt_generic_init($td, $key, $iv) != -1) {

     /* Encrypt data */
     $c_t = mdecrypt_generic($td, $string);
     mcrypt_generic_deinit($td);
     mcrypt_module_close($td);
       return $c_t;
   } //end if
}

if (!isset($_POST['string']) and !isset($_SESSION['cyphertext'])){
echo "<form action=\"mcrypt.php\" method=\"post\">"
			."Stringa da cifrare: <input type=\"text\" size=\"20\" maxlength=\"60\" name=\"string\"><br>"
			."Chiave: <input type=\"text\" size=\"20\" maxlength=\"60\" name=\"key\"><br>"
			."<button type=\"submit\">Genera la chiave</button></form>";

}elseif (isset($_POST['string']) and isset($_POST['key'])){
$crypt = my_encrypt($_POST['string'],$_POST['key']);
$_SESSION['cyphertext'] = $crypt;
echo "Valore della stringa cifrata: $crypt <br><a href=\"mcrypt.php\">Torna indietro</a>";

}elseif (isset($_SESSION['cyphertext']) and !isset($_POST['key'])){
echo "<form action=\"mcrypt.php\" method=\"post\">"
			."Stringa cifrata: {$_SESSION['cyphertext']}<br>"
			."Chiave di decifratura: <input type=\"text\" size=\"20\" maxlength=\"60\" name=\"key\"><br>"
			."<button type=\"submit\">Decifra la stringa</button></form>";
			
}elseif (isset($_SESSION['cyphertext']) and isset($_POST['key'])){
$decrypt = my_decrypt($_SESSION['cyphertext'],$_POST['key']);
echo "Valore della stringa decifrata: $decrypt<br>";
session_unset();
echo "<a href=\"mcrypt.php\">Torna indietro</a>";

}










?>