我理解这可能是这个问题的重复:How to encrypt data in sql server and decrypt it in .net apps - 但这是在差不多一年前被问到的,我希望可能会有进步或其他什么。
无论如何,我们有一个应用程序,FTP文件从一个位置到另一个位置,显然FTP配置文件需要密码。我们有一个包含配置文件所有详细信息的数据库,但我们需要加密密码。我们曾想过在SQL中解密它们然后将它们发送到应用程序,但这意味着通过网络发送它,这是我们不想要的。
我们要加密存储的密码,将详细信息传递给应用程序,然后在应用程序中解密它们。
这可能吗?
从我的谷歌搜索,它似乎不是,但我希望有人有窍门或其他。
提前致谢!
注意:我正在使用.Net 4和SQL Server 2008 R2。
答案 0 :(得分:6)
使用SQL Server列加密API函数(如EncryptByKey
)的加密和解密与任何客户端加密或解密都不兼容,因为它使用内部的,未记录的存储格式。
我想说,由于SQL Server提供了网络连接机密性,因此您不担心通过网络发送密码,请参阅Encrypting Connections to SQL Server。
您最好的选择是将密码存储在加密列中,并使用内置的SQL Server加密函数(EncryptByKey
,DecryptbyKey
)或使用Transparent Database Encryption。标准也选择一个或另一个主要是许可要求(TDE要求企业版),因为TDE在每个方面都优于列级加密。无论您选择何种解决方案,您都会很快意识到主要问题是密钥管理,并且SQL Server提供了一个可行的故事,请参阅Encryption Hierarchy。无论您如何设计解决方案,都不需要应用程序加密或解密密码本身,如果您需要,那么您显然是错误的路径(因为应用程序无法管理密钥本身),所以应该永远不会出现CLR加密和SQL加密兼容性问题。
答案 1 :(得分:1)
Simpy对.net中的密码进行加密和解密,就SQL而言,它只是存储文本。
答案 2 :(得分:1)
答案 3 :(得分:0)