diff --git a/userspace/rootfs_override/var/www/change_passwd.php b/userspace/rootfs_override/var/www/change_passwd.php
index 941a7041fd7d589ed566e0c264eac109970143f2..cf1479b476130948f2acd593c6e82c8994b582ac 100644
--- a/userspace/rootfs_override/var/www/change_passwd.php
+++ b/userspace/rootfs_override/var/www/change_passwd.php
@@ -16,81 +16,88 @@
 </div>
 <div class="rightpanel">
 <div class="rightbody">
-<h1 class="title">User Administration <a href='help.php?help_id=network' onClick='showPopup(this.href);return(false);'><img align=right src="./img/question.png"></a></h1>
+<h1 class="title">User Administration</h1>
 
 	<?php session_is_started() ?>
 	<?php $_SESSION['advance']=""; ?>
-	
-	<table border="0" align="left">	
-		
+
+	<table class="altrowstable" id="alternatecolor" border="0" align="center">	
+
 			<form method="post">
-			<tr><th>Username: </th><th><INPUT type="text" name="user" value="admin" readonly></th></tr>
-			<tr><th>Old Password: </th><th><INPUT type="password" name="oldpasswd" > </th></tr>
-			<tr><th>New Password: </th><th> <INPUT type="password" name="newpasswd" > </th></tr>
-			<tr><th>Confirm Password: </th><th><INPUT type="password" name="confirmpasswd" > </th></tr>
-			<tr><th></th><th  align="center"><input type="submit" value="Change Password" class="btn"></th></tr>
+			<tr><td>Username: </td><td><INPUT type="text" name="user" value="root" readonly></td></tr>
+			<tr><td>Old Password: </td><td><INPUT type="password" name="oldpasswd" > </td></tr>
+			<tr><td>New Password: </td><td> <INPUT type="password" name="newpasswd" > </td></tr>
+			<tr><td>Confirm Password: </td><td><INPUT type="password" name="confirmpasswd" > </td></tr>
+			<tr><td></td><td  align="center"><input type="submit" value="Change Password" class="btn"></td></tr>
 			</form>
-		
+
 	</table>
-	
-	
-	<?php 
+
+	<?php
 		//Change user password
-		
-		$success=false;
-		if( empty($_POST['user'])){
-			echo '<br><br><br><p align=center>Please fill fields.<br></p>';
-				
+
+		if(!(!empty($_POST["oldpasswd"]) || !empty($_POST["newpasswd"]) || !empty($_POST["confirmpasswd"]))){
+			echo '<br><br><p align="center">*Please fill all fields.</p>';	
 		}else{
-			$saved_hash = shell_exec("cat ".$GLOBALS['phpusersfile']." | grep ".$_POST["user"]." | awk '{print $2}'");
-			$saved_hash = str_replace("\n","",$saved_hash);
-			
+
 			$username = $_POST["user"];
 			$oldpassword = $_POST["oldpasswd"];
 			$newpasswd = $_POST["newpasswd"];
 			$confirmpasswd = $_POST["confirmpasswd"];
-			
-			//First confirm old password
-			$salt="wrs4.0salt";
-			$pass = $oldpassword;
-			$hash = md5($pass); // md5 hash #1 
-			$hash_md5 = md5($salt.$pass); // md5 hash with salt #2 
-			$hash_md5_double = md5(sha1($salt.$pass)); // md5 hash with salt & sha1 #3 
-			
-			
-			if (!strcmp($hash_md5_double, $saved_hash) && !strcmp($newpasswd, $confirmpasswd) && !strcmp($_POST["user"],$_SESSION['myusername'])){ //old password is correct && new and confirm are the same
-				//set the new one
-				
-				$pass = $confirmpasswd;
-				$hash = md5($pass); // md5 hash #1 
-				$hash_md5 = md5($salt.$pass); // md5 hash with salt #2 
-				$hash_md5_double = md5(sha1($salt.$pass)); // md5 hash with salt & sha1 #3 
-				
-				//Save in file
-				//We save the changes in a temporarely file in /tmp
-				$old_value=$username." ".$saved_hash;
-				$new_value=$username." ".$hash_md5_double;
 
-				$output = shell_exec('cat '.$GLOBALS['phpusersfile'].' | sed -i "s/'.$old_value.'/'.$new_value.'/g" '.$GLOBALS['phpusersfile']); //replace password for the user
-				
-				//$file = fopen("/etc/phpusers","w+");
-				//fwrite($file,$output);
-				//fclose($file);
-				
-				
-				
-				$success=true;
-				echo '<br><br><br><p align=center>Password changed.<br></p>';
+			/* Changing the password from the web interface will always save
+			 * the password encrypted for security reasons...
+			 * */
+			if(!empty($_SESSION['KCONFIG']['CONFIG_ROOT_PWD_IS_ENCRYPTED'])){
+				/* Previous password was encrypted */
+				/* password shall be here: ROOT_PWD_CYPHER */
+				$dotconfig_passwd = $_SESSION['KCONFIG']['CONFIG_ROOT_PWD_CYPHER'];
+				$salt = get_encrypt_salt($dotconfig_passwd);
+				$method = get_encrypt_method($dotconfig_passwd);
+				$rounds = get_encrypt_rounds($dotconfig_passwd);
+				$oldpassword = encrypt_password($oldpassword, $salt, $rounds, $method);
+			}else{
+				/* previous password was not encrypted */
+				/* password shall be here: ROOT_PWD_CLEAR */
+				$dotconfig_old_passwd = $_SESSION['KCONFIG']['CONFIG_ROOT_PWD_CLEAR'];
+			}
+
+			if(!strcmp($newpasswd,$confirmpasswd)==0){
+				echo '<br><br><div id="alert" align="center">New and confirm password are different.</div>';
+				exit;
 			}else{
-				$success=false;
-				echo '<br><br><br><p align=center>Error changing password.<br></p>';
+				$method = "CRYPT_MD5";
+				$rounds = "";
+				$salt = substr(substr( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,
+							mt_rand( 0 ,50 ) ,1 ) .substr( md5( time() ), 1), 4, 8);
+				$newpasswd = encrypt_password($newpasswd, $salt, $rounds, $method);
+			}
+
+			if(strcmp($newpasswd,"")==0){ /* using mkpasswd it can never be NULL */
+				echo '<br><br><div id="alert" align="center">Something went wrong.</div>';
+				exit;
+			}
+
+			if(!strcmp($dotconfig_passwd,$oldpassword)==0){
+				echo '<br><br><div id="alert" align="center">Old password was not correct.</div>';
+				exit;
+			}else{ /* Save to dotconfig... */
+				if(!empty($_SESSION['KCONFIG']['CONFIG_ROOT_PWD_IS_ENCRYPTED'])){
+					$_SESSION['KCONFIG']['CONFIG_ROOT_PWD_CYPHER'] = $newpasswd;
+				}else{ /* previous was not encrypted */
+					$_SESSION['KCONFIG']['CONFIG_ROOT_PWD_IS_ENCRYPTED']="y";
+					$_SESSION['KCONFIG']['CONFIG_ROOT_PWD_CYPHER']=$newpasswd;
+					check_add_existing_kconfig("CONFIG_ROOT_PWD_IS_ENCRYPTED=");
+					check_add_existing_kconfig("CONFIG_ROOT_PWD_CYPHER=");
+					delete_from_kconfig("CONFIG_ROOT_PWD_CLEAR=");
+				}
+				save_kconfig();
+				apply_kconfig();
+				load_kconfig();
+				header('Location: logout.php');
 			}
-			
-			
 		}
-		
-		if($success) header('Location: logout.php');
-	
+
 	?>
 
 </div>
diff --git a/userspace/rootfs_override/var/www/css/style.css b/userspace/rootfs_override/var/www/css/style.css
index d3a57f8cbbf8770266be99355748c4c8727851bf..d854d5ed13d2eb7c50d79efe83ff54500ff1b5b2 100644
--- a/userspace/rootfs_override/var/www/css/style.css
+++ b/userspace/rootfs_override/var/www/css/style.css
@@ -300,7 +300,7 @@ table.altrowstablesmall td {
 	padding: 1px;
 	border-style: solid;
 	border-color: #a9c6c9;
-	font-size: 10px;
+	font-size: 9px;
 	width: 100%;
 }
 table.altrowstablesmall input {
diff --git a/userspace/rootfs_override/var/www/functions.php b/userspace/rootfs_override/var/www/functions.php
index b640b7d1cbcf6d9eba48c57dad17ef23d931d64e..6e395cd5a43b3428e48a3b56fe724efffcc312a2 100644
--- a/userspace/rootfs_override/var/www/functions.php
+++ b/userspace/rootfs_override/var/www/functions.php
@@ -1382,4 +1382,85 @@ function apply_kconfig(){
 	shell_exec($dotconfigapp. " local_config > /dev/null 2>&1 &");
 }
 
+function encrypt_password($password, $salt, $rounds, $method){
+
+	$encrypted_passwd = "";
+
+	switch ($method) {
+		case "CRYPT_STD_DES":
+			$encrypted_passwd = shell_exec('/wr/bin/mkpasswd --method=des "'.$password.'" --salt="'.$salt.'"');
+			$encrypted_passwd = str_replace("\n", "", $encrypted_passwd);
+			break;
+		case "CRYPT_MD5":
+			$encrypted_passwd = shell_exec('/wr/bin/mkpasswd --method=md5 "'.$password.'" --salt="'.$salt.'"');
+			$encrypted_passwd = str_replace("\n", "", $encrypted_passwd);
+			break;
+		case "CRYPT_BLOWFISH":
+			$encrypted_passwd = shell_exec('/wr/bin/mkpasswd --method=bf "'.$password.'" --salt="'.$salt.'"');
+			$encrypted_passwd = str_replace("\n", "", $encrypted_passwd);
+			break;
+		case "CRYPT_SHA256":
+			$encrypted_passwd = shell_exec('/wr/bin/mkpasswd --method=sha-256 "'.$password.'" --salt="'.$salt.'" --rounds="'.$rounds.'"');
+			$encrypted_passwd = str_replace("\n", "", $encrypted_passwd);
+			break;
+		case "CRYPT_SHA512":
+			$encrypted_passwd = shell_exec('/wr/bin/mkpasswd --method=sha-512 "'.$password.'" --salt="'.$salt.'" --rounds="'.$rounds.'"');
+			$encrypted_passwd = str_replace("\n", "", $encrypted_passwd);
+			break;
+	}
+
+	return $encrypted_passwd;
+}
+
+function get_encrypt_method($enc_password){
+
+	$method = "";
+	if (strpos($enc_password,'$1$') !== false)
+		$method = "CRYPT_MD5";
+	else if (strpos($enc_password,'$2a$07$') !== false)
+		$method = "CRYPT_BLOWFISH";
+	else if (strpos($enc_password,'$5$') !== false)
+		$method = "CRYPT_SHA256";
+	else if (strpos($enc_password,'$6$') !== false)
+		$method = "CRYPT_SHA512";
+
+	return $method;
+}
+
+function get_encrypt_rounds($enc_password){
+
+	$elements = explode("$", $enc_password);
+	$rounds = "";
+
+	foreach ($elements as $element){
+		if (strpos($element,'rounds=') !== false){
+			$rounds = str_replace("rounds=","",$element);
+		}
+	}
+	return $rounds;
+}
+
+function get_encrypt_salt($enc_password){
+	$method = get_encrypt_method($enc_password);
+	$salt = "";
+
+	$elements = explode("$", $enc_password);
+
+	switch ($method) {
+		case "CRYPT_MD5":
+			$salt = $elements[2];
+			break;
+		case "CRYPT_BLOWFISH":
+			$salt = $elements[3];
+			break;
+		case "CRYPT_SHA256":
+			$salt = $elements[3];
+			break;
+		case "CRYPT_SHA512":
+			$salt = $elements[3];
+			break;
+	}
+	return $salt;
+}
+
 ?>
diff --git a/userspace/rootfs_override/var/www/login.php b/userspace/rootfs_override/var/www/login.php
index 9494d678e948855e0fbb37d009467459fbb5f710..9e23933a794935c71c6aad8990cb4a9ff1fcccd7 100644
--- a/userspace/rootfs_override/var/www/login.php
+++ b/userspace/rootfs_override/var/www/login.php
@@ -24,43 +24,30 @@
 		$message="";
 		if(count($_POST)>0) {
 
-			//If /etc/phpusers does not exist we create the file and "admin" "" user&pass
-			if (!file_exists($GLOBALS['phpusersfile'])) {
-				$username = "admin";
-				$password = "";
-				$salt="wrs4.0salt";
-				$pass = $password;
-				$hash = md5($pass); // md5 hash #1
-				$hash_md5 = md5($salt.$pass); // md5 hash with salt #2
-				$hash_md5_double = md5(sha1($salt.$pass)); // md5 hash with salt & sha1 #3
-				$output= $username." ".$hash_md5_double."\n";
-				$file = fopen($GLOBALS['phpusersfile'],"w+");
-				fwrite($file,$output);
-				fclose($file);
-			}
-
+			/* User shall always be "root" (by the moment...) */
+			load_kconfig();
 			$username = $_POST["login"];
 			$password = $_POST["password"];
-			$saved_hash = shell_exec("cat ".$GLOBALS['phpusersfile']." | grep '".$username."' | awk '{print $2}'");
-			$saved_user = shell_exec("cat ".$GLOBALS['phpusersfile']." | grep '".$username."' | awk '{print $1}'");
-			$saved_user = preg_replace('/\s+/', '', $saved_user);
-			$saved_hash = str_replace("\n","",$saved_hash);
-			$user_exists = shell_exec("cat ".$GLOBALS['phpusersfile']." | grep -c ".$username);
-
-			$salt="wrs4.0salt";
-			$pass = $password;
-			$hash = md5($pass); // md5 hash #1
-			$hash_md5 = md5($salt.$pass); // md5 hash with salt #2
-			$hash_md5_double = md5(sha1($salt.$pass)); // md5 hash with salt & sha1 #3
-
-			if (!strcmp($hash_md5_double,$saved_hash) && $user_exists>0 && (strcmp($saved_user, $username) == 0)){
+			
+			if(!empty($_SESSION['KCONFIG']['CONFIG_ROOT_PWD_IS_ENCRYPTED'])){
+				/* password is here: ROOT_PWD_CYPHER */
+				$dotconfig_passwd = $_SESSION['KCONFIG']['CONFIG_ROOT_PWD_CYPHER'];
+				$salt = get_encrypt_salt($dotconfig_passwd);
+				$method = get_encrypt_method($dotconfig_passwd);
+				$rounds = get_encrypt_rounds($dotconfig_passwd);
+				$password = encrypt_password($password, $salt, $rounds, $method);
+			}else{ /* password is here: ROOT_PWD_CLEAR */
+				$dotconfig_passwd = $_SESSION['KCONFIG']['CONFIG_ROOT_PWD_CLEAR'];
+			}
+			
+			if ((strcmp($username,"root")==0) && (strcmp($dotconfig_passwd, $password) == 0)){
 				session_start();
 				$_SESSION["myusername"] = $username;
 
 				echo 'Logged in as '.$_SESSION["myusername"];
 				header('Location: index.php');
 			}else{
-				echo 'Invalid Username or Password';
+				echo '<div id="alert"><center>Invalid Username or Password</center></div>';
 			}
 
 		}