public ActionResult ChangePassword(String data) { Dictionary <String, Object> response = new Dictionary <String, Object>(); Dictionary <String, Object> datos = new Dictionary <String, Object>(); var result = new JavaScriptSerializer().Deserialize <dynamic>(data); foreach (var obj in result) { datos.Add(obj["name"], obj["value"]); } Dictionary <String, Object> user_data = (Dictionary <String, Object>)Session["USER_DATA"]; Dictionary <String, Object> userData = Usuarios.GetInfoUserSession(int.Parse(user_data["IdUsuario"].ToString())); // Validar contraseña actual if (Security.Encriptar(datos["ContrasenaActual"].ToString(), userData["HashKey"].ToString()) != userData["PasswordUser"].ToString()) { response.Add("error", "La contraseña actual no coincide con la contraseña del usuario."); return(Json(response, JsonRequestBehavior.AllowGet)); } //Validar que contraseña nueva sea diferente a la actual if (Security.Encriptar(datos["NuevaContrasena"].ToString(), userData["HashKey"].ToString()) == userData["PasswordUser"].ToString()) { response.Add("error", "La nueva contraseña es igual a la actual."); return(Json(response, JsonRequestBehavior.AllowGet)); } datos["IdUsuario"] = int.Parse(user_data["IdUsuario"].ToString()); datos["HashKey"] = Security.GenerateRandomKey(); datos["PasswordUser"] = Security.Encriptar(datos["NuevaContrasena"].ToString(), datos["HashKey"].ToString()); bool resp = Usuarios.ChangePassword(datos); if (resp) { response.Add("success", "true"); } else { response.Add("error", "No se ha podido guardar el usuario."); } return(Json(response, JsonRequestBehavior.AllowGet)); }