在.Net 4中加密SQL Server / Decrypt

我知道这可能是这个问题的重复: 如何加密sql server中的数据并在.net应用程序中解密 – 但这是近一年前问的,我希望可能有进步或其他东西。

无论如何,我们有一个应用程序,FTP文件从一个位置到另一个位置,显然FTP配置文件需要一个密码。 我们有一个包含配置文件所有详细信息的数据库,但我们需要加密密码。 我们已经考虑过在SQL中解密然后将它们发送到应用程序,但这意味着通过网络发送它,这是我们不想要的。

我们想要加密存储的密码,将详细信息传递给应用程序,然后在应用程序中解密它们。

这可能吗?

从我的谷歌搜索,它似乎不是,但我希望有人有一个技巧或东西。

提前致谢!

注意:我使用的是.Net 4和SQL Server 2008 R2。

使用SQL Server列加密API函数(如EncryptByKey )的加密和解密与任何客户端加密或解密都不兼容,因为它使用内部的,未记录的存储格式。

我想说,由于SQL Server提供了网络连接机密性,因此您不担心通过网络发送密码,请参阅加密与SQL Server的连接 。

您最好的选择是将密码存储在加密列中,并使用内置的SQL Server加密函数( EncryptByKeyDecryptbyKey )或使用透明数据库加密 。 标准也选择一个或另一个主要是许可要求(TDE要求企业版),因为TDE在每个方面都优于列级加密。 无论您选择何种解决方案,您都会很快意识到主要问题是密钥管理,并且SQL Server提供了一个可行的故事,请参阅加密层次结构 。 无论您如何设计解决方案,都不需要应用程序加密或解密密码本身,如果您需要,那么您显然是错误的路径(因为应用程序无法管理密钥本身),所以应该永远不会出现CLR加密和SQL加密兼容性的问题。

Simpy在.net中加密和解密密码,就SQL而言,它只是存储文本。

您是否考虑过SQL Server的透明数据加密(TDE) ?

在我看来,“明显的答案”是你需要在SQL服务器和dotNet中使用相同的算法(或适当的匹配加密/解密对)。 因为前者使用T-SQL而后者是C#/ VB之类的托管代码语言,所以您必须以不同的语言编写/获取算法的两半。 育。

您是否考虑过使用SQL CLR ? 这样你就可以在C#中编写两个部分,并从SQL运行该代码。

我有一段时间坐在我的架子上一段时间,但从来没有深入研究它 – 主要是因为,虽然非常酷的原则 – 我从来没有找到’需要’使用SQLCLR。 然而,你的问题听起来像一个强大的候选人:-)

HTH 🙂

达米安