查询数据库中的加密值

时间:2012-01-31 14:48:13

标签: asp.net sql-server security sql-server-2008 encryption

我有一个使用SQL Server 2008的ASP.NET Web应用程序。

当通过Web应用程序提交邮政编码时,它会被加密,然后加密的值被发送到数据库并插入到表格中。

我现在需要通过搜索邮政编码的部分内容,找到一种从网络应用程序查询这些邮政编码的方法,如:

SELECT PostCode
FROM Table
WHERE PostCode LIKE @PostCode + '%'

如果不在数据库中存储解密功能,我该怎么做? (我认为这对安全性有害吗?)

3 个答案:

答案 0 :(得分:4)

这里真的只有两种选择。

  1. 将您提交的数据加密到您的选择查询。这样您就可以比较两个不同的加密值。当然,如果你使用盐,这将失败..

  2. 不要在存储之前加密值。相反,只需正常保存即可。如果确实需要加密,请使用SQL Server中可用的加密方法自动加密列:http://msdn.microsoft.com/en-us/library/ms179331.aspx

  3. 加密的目的主要是保护“静止”信息。 SQL服务器可以自己完成。

答案 1 :(得分:1)

第一种方式

您可以从ASP.Net应用程序发送数据库中的加密邮政编码,并使用下面的加密邮政编码进行查询....

SELECT PostCode
FROM Table
WHERE PostCode LIKE @EncryptedPostCode + '%'

第二种方式

有关查询加密列的文章。

Encrypted Columns and SQL Server Performance

答案 2 :(得分:0)

所以,你将“Court”发送到你的数据库,它会存储类似“#&%^^”的内容,你想在DB上查找字符串“Court”吗?

我认为唯一的方法是加密Web应用程序上的搜索字符串(因为您已经插入它)并将其与数据库上的加密版本进行比较。