c# - 来自 C# 应用程序的加密

标签 c# sql sql-server encryption public-key

情况: 我需要在我的远程数据库和我的 c# 应用程序之间进行加密。我不知道我在做什么(以前从未做过任何加密),我在网上找到的所有东西都是针对 asp.net 的,并处理了 web.config 文件。

一些相关数据: 我的连接字符串包含用于 SQL 服务器身份验证的密码信息,有一个选择和一个删除语句。这三样东西需要加密。

我正在使用 SQL Server 2008、Visual Studio 2008 和 C#。

我怀疑这是否相关,但这是在 Windows 服务中发生的。到目前为止,在 winForms 中工作的任何与 SQL 相关的东西都对我在服务中有用,因此也感谢与 winForms 相关的任何帮助。

我需要什么帮助:

  1. 任何不限于 asp.net 的加密引用将不胜感激。 :)

  2. 我看到 MSDN page ,这似乎是一个不错的起点,但我有点困惑。似乎这是 2 个应用程序相互发送文件的方式,而不是向 SQL Server 发送加密的内容?使用这个,我看不出 SQL Server 如何知道如何解密它?

  3. 在 System.Security.Cryptography 中,我是否在左侧视野中出路了?是否有某种方法可以在 System.Data.SqlClient 中指定加密,或者我将不得不求助于在远程服务器上制作存储过程?

先谢谢了!!! :)

总结:

谢谢大家让我走上了正确的道路,很难只选择一个答案! :)

我已经得出结论,我需要使用 SSL,虽然我对操作方法有很多困惑,但我知道这需要一个证书,并且一旦设置了证书,客户端就可以请求通过在连接字符串中请求“Encrypt=yes”来加密。幸运的是,我相信我已经有了可以使用的。

另一件需要注意的事情 - TDE 是关于什么有利于加密数据库中的数据的共识,而 SSL 是用于传输加密数据的方法。

以下是我认为最有帮助的几个链接:

Link

http://support.microsoft.com/default.aspx?scid=kb;en-us;316898

最佳答案

您需要的是保护您的应用程序和 SQL Server 之间的流量。为此,只需按照 Encrypting Connections to SQL Server 中描述的步骤操作即可。 .

接下来的事情是,如果您存储敏感数据,您希望将其加密存储在数据库中以防止意外的媒体丢失。到目前为止,最好的解决方案是使用 Transparent Database Encryption .

这些解决方案都不需要在您的应用程序中更改任何一行代码。它们都是部署时间、管理员控制的设置。尝试推出自己的密码学解决方案会让你一事无成。在密码学中很容易搞砸,而且你甚至都不知道。通过简单地利用 SQL 提供的加密功能(连接 TLS、存储 TDE),在不更改应用程序的情况下满足要求要容易得多,也好得多。

关于c# - 来自 C# 应用程序的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993135/

相关文章:

mysql - 如何防止使用 ON cond1 或 cond2 的 SQL INNER JOIN 忽略键并执行全表扫描

mysql - 在一个表中使用 2 个外键是否可以,其中一个必须为空?

sql - 在SQL Server中将字符串排序为数字

sql-server - 如何在 Mac 上连接到 Objective-C/Cocoa 中的 MS SQL Server?

sql-server - sql server 除了存储过程结果

c# - RS485为什么会返回发送的数据?

c# - 使用 C# 将排序添加到嵌套的 Gridview ASP.net

sql - 您如何找到一条链的原始 ID、第一个 ID 和最后一个 ID?

c# - 当 source 上的属性为 false 时是否可以映射到 null?

c# - 使用 appsettings 驱动特定于环境的设置,例如 UseUrls