我知道这可能是这个问题的重复:如何在 sql server 中加密数据并在 .net 应用程序中解密 https://stackoverflow.com/questions/3202011/how-to-encrypt-data-in-sql-server-and-decrypt-it-in-net-apps- 但这是大约一年前提出的,我希望可能会有进展或其他什么。
不管怎样,我们有一个应用程序可以将文件从一个位置传输到另一个位置,显然 FTP 配置文件需要密码。我们有一个包含配置文件所有详细信息的数据库,但我们需要对密码进行加密。我们考虑过在 SQL 中解密它们,然后将它们发送到应用程序,但这意味着通过网络发送,这是我们不希望的。
我们想要加密存储的密码,将详细信息传递给应用程序,然后在应用程序中解密它们。
这可能吗?
从我的谷歌搜索来看,似乎并非如此,但我希望有人有窍门或其他什么。
提前致谢!
Note:我正在使用.Net 4 和 SQL Server 2008 R2。
使用 SQL Server 列加密 API 函数(例如EncryptByKey http://msdn.microsoft.com/en-us/library/ms174361.aspx)与任何客户端加密或解密不兼容,因为它使用内部的、未记录的存储格式。
我要指出的是,您对通过网络发送密码的担心是没有根据的,因为 SQL Server 提供网络连接机密性,请参阅加密与 SQL Server 的连接 http://msdn.microsoft.com/en-us/library/ms189067.aspx.
最好的选择是将密码存储在加密列中并使用内置的 SQL Server 加密函数(EncryptByKey http://msdn.microsoft.com/en-us/library/ms174361.aspx, DecryptbyKey http://msdn.microsoft.com/en-us/library/ms181860.aspx)或使用透明数据库加密 http://msdn.microsoft.com/en-us/library/bb934049.aspx。选择其中之一的标准主要是许可要求(TDE 需要企业版),因为 TDE 在各个方面都优于列级加密。无论您选择哪种解决方案,您都会很快意识到主要问题是密钥管理,为此 SQL Server 提供了一个可行的方案,请参阅加密层次结构 http://technet.microsoft.com/en-us/library/ms189586.aspx。无论您如何设计解决方案,应用程序都不需要自行加密或解密密码,如果您需要这样,那么您显然走上了一条错误的道路(因为应用程序本身无法管理密钥),因此永远不应该出现 CLR 加密和 SQL 加密兼容性问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)