grazie per la risposta, nel frattempo ho scritto questo semplice algoritmo 
per farlo funzionare assicuratevi di riempire tutti i campi (sia sopra che sotto)
sul web non ho trovato niente riguardo alla somma di hash o di numeri esadecimali allora ho avuto la "brillantissima idea" di sommare carattere per carattere per ottenere il nuovo hash.
il nuovo hash però non è in forma esadecimale, anzi esteticamente è molto brutto
allora basta passarlo di nuovo all'algoritmo md5 così lo trucchiamo da hash.
che ne dite?
Codice PHP:
<form method="post">
username: <input name="username">
password: <input name="password">
data: <input name="data">
<?
$username=$_POST["username"];
$password=$_POST["password"];
$data=$_POST["data"];
$sum="";
$md5username=md5($username);
$md5password=md5($password);
$md5data=md5($data);
for($i=0;$i<32;$i++)
$sum.=chr(ord($md5username[$i])+ord($md5password[$i])+ord($md5data[$i]));
$hash=md5($sum);
echo "hash di ".$username.": ".$md5username."
";
echo "hash di ".$password.": ".$md5password."
";
echo "hash di ".$data.": ".$md5data."
";
echo "somma degli hash: ".$sum."
";
echo "hash della somma: ".$hash."
";
?>
PROVA DI LOGIN
username: <input name="l1">
password: <input name="l2">
data: <input name="l3">
<input type="submit">
</form>
<?
$l1=$_POST["l1"];
$l2=$_POST["l2"];
$l3=$_POST["l3"];
$l4="";
$md5l1=md5($l1);
$md5l2=md5($l2);
$md5l3=md5($l3);
for($i=0;$i<32;$i++)
$l4.=chr(ord($md5l1[$i])+ord($md5l2[$i])+ord($md5l3[$i]));
$hashl4=md5($l4);
if ($hashl4==$hash) echo "login effettuato";
else echo "login errato";
?>