2017-10-15 77 views
0

我得到了一个关于SQL中的加密的问题:在应用程序的代码(C#)中加密数据并将加密的数据存储在数据库中比使用内置的SQL加密选项。使用SQL-CLR函数验证SQL Server中的加密数据的安全

我喜欢这一点:

  1. 您不必担心确保你就可以对数据进行解密,如果你恢复数据库不同的服务器上或使用SQL复制时。我知道你可以生成一个特殊的密钥,它可以让你做到这一点,但又一次,开销太大。

  2. 它创建加密方法和加密数据之间的完全分离。

验证用户密码是通过比较用户输入和散列密码通过应用程序的代码完成的。我不认为任何人都需要运行一个查询来检查有多少用户有特定的密码,所以我们很好。另一方面,如果加密数据是信用卡#,则运行查询以了解特定卡何时被使用并不是一个不常见的任务。

为了解决这个问题,我想使用SQL-CLR函数来验证加密数据。它将仅用于验证而不用于加密。

我不知道这会是多么安全,特别是如果我想要创建一些存储过程,将继承此用户功能,以便能够查询数据。

谢谢!

+0

你是什么意思“验证加密数据”?你的意思是即时解密它吗? – Alex

+0

您是否考虑过性能影响?例如。你是否想在你的数据库中创建索引等。我强烈建议实现现有的一种方法(在线查找教程),而不是自己重新发明轮子。有了安全性,很容易犯一个微不足道的错误,使你所有的努力都变得无声无息。这一切都是关于链条中最薄弱的环节。 – Alex

回答

0

你只是在问我想的PCI问题。为什么你需要知道什么时候使用特定的卡?用于分析/报告或调查/争议等。

您的商家处理器(我假设您是基于该帖子的商家)可能有办法在销售点标记实际卡号。该令牌仍然允许您执行分析/报告。

将数据库中的加密数据存储在应用程序层中进行加密,然后提供一种在数据库中解密的方法可能会破坏加密的所有优点。

您可以在您的C#应用​​程序中加密卡号,然后使用已加密的值查询该数据库吗?

你能帮助“验证加密数据”吗?