ASP.NET无法搜索加密表

时间:2019-04-11 18:21:27

标签: asp.net sql-server encryption model-view-controller

我有一个加密的数据库,我正在使用this帖子上由CraigTP完成的StringCipher对其进行加密。

但是,当我尝试搜索数据库时,无法使用解密的值进行搜索,因为我加密的每个值都是不同的,所以对搜索值进行加密并将其与数据库进行匹配是没有用的。现在,我正在解密列表,并尝试将搜索值与此解密后的列表进行匹配,但是仍然无法显示结果。但是,如果我搜索直接从数据库中获取的加密值,则会得到结果。我已经尝试了所有我能想到的东西,但没有想法。

这是我的索引方法:

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>

0 个答案:

没有答案