Ho provato e ho fatto così. Dal lato client, esattamente prima di inviare la password faccio la crittografia poi la invio. Dal lato server faccio il confronto.
In teoria, se la password è abbastanza complessa, la password intercettata via rete è indecifrabile.
Però proprio adesso mi è venuto in mente che qualcuno potrebbe lo stesso riprodurre pari pari il messaggio HTTP (in qualche modo, non so) inviando la password così crittografata e fare il login senza sapere esattamente qual è. Per cui in fin dei conti l'unico modo veramente sicuro di fare login è SSL. Voi cosa ne dite?
codice:
<head>
		<title></title>
		<link rel="stylesheet" type="text/css" href="style.css" />
		<script src="md5-min.js" type="text/javascript"></script>
		<script type="text/javascript">
			function encrypt(){
				document.getElementById('password').value=hex_md5(document.getElementById('username').value+' $%& '+document.getElementById('password').value);
				document.getElementById('username').value='';
			}
		</script>
	</head>
	<body>
		<div id="login_frame">
			<form action="main.php" method="post" onSubmit="encrypt()">
				<label for="username">Username:</label>
				<input type="text" id="username" name="username" />
				<label for="password">Password:</label>
				<input type="password" id="password" name="password" />
				<input type="submit" value="Invia" />
				<input type="reset" value="Cancella" />
				<p class="error"><?php print @$_SESSION['error'];?></p>
			</form>
		</div>
	</body>