У меня есть зашифрованная база данных, я шифрую ее с помощью этого StringCipher, созданного CraigTP для этой записи.
Однако, когда я пытаюсь выполнить поиск в моей базе данных, я не могу выполнить поиск с использованием Decryptedзначения, поскольку каждое значение, которое я шифрую, отличается, шифрование искомого значения и попытка сопоставить его с базой данных бесполезно.Сейчас я расшифровываю список и пытаюсь сопоставить значение поиска с этим расшифрованным списком, но я все еще не могу отобразить результаты.Однако, если я ищу зашифрованное значение, полученное непосредственно из БД, я получаю результаты.Я перепробовал все, что мог придумать, и у меня нет идей.
Вот мой метод индекса:
public ViewResult Index(string sortOrder, string searchString)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "Username" : "";
ViewBag.CurrentSort = sortOrder;
var Users = from s in db.Users
select s;
foreach(User element in Users)
{
element.Username = StringCipher.Decrypt(element.Username.ToString());
element.Password = StringCipher.Decrypt(element.Password.ToString());
}
if (!String.IsNullOrEmpty(searchString))
{
Users = Users.Where(s => s.Username.Contains(searchString));
}
switch (sortOrder)
{
case "Username":
Users = Users.OrderByDescending(s => s.Username);
break;
}
return View(Users.ToList());
}
А вот мое представление индекса:
@model IEnumerable<EncryptTest.Models.User>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm())
{
<p>
Find by name: @Html.TextBox("SearchString")
<input type="submit" value="Search" /></p>
}
<table class="table">
<tr>
<th>
@Html.ActionLink("Username", "Index", new { sortOrder = ViewBag.NameSortParm })
</th>
<th>
Password
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.Password)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID_User}) |
@Html.ActionLink("Details", "Details", new { id = item.ID_User }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID_User })
</td>
</tr>
}
</table>