我正在寻找一种简单的方法来加密我的 C# Web 服务中的肥皂通信。

我正在调查 华尔街英语3.0 但微软似乎放弃了对它的支持,因此它并不容易使用。
看来 WCF 可能是一个选择,但我不想从 .NET 2.0 升级。

任何 简单的, ,简单的加密方法?

有帮助吗?

解决方案

我认为这会有所帮助;去年我们用它来压缩网络服务,它的性能非常好,我相信它可以通过加密类来增强;

创建自定义 SOAP 扩展 - 压缩扩展

其他提示

任何不使用 SSL/TLS 来提供“加密”的操作都可能容易受到攻击。现在您必须问自己,是否值得将开发时间花在橡皮鸡安全措施的功能上?也许是的。

.NET API(例如 DPAPI 和 Win32 crypt32 API)可以轻松使用静态密钥加密 blob 数据。但是您的客户将如何收到钥匙?任何已安装的 SOAP 客户端都必须将密钥写入其配置中,或者通过不安全的 Internet 接收密钥。

这就是SSL/TLS为您解决的问题;您使用 TLS 证书进行的操作可以解决通过不可信通道传输公钥的问题。

也许我很天真,但是强迫通过HTTP的沟通可以接受吗?我开发了在2.0上运行的Web服务,并在仅使IIS在虚拟目录上执行HTTPS取得了成功。

这可能是最简单的方法,但不幸的是,我无法控制IIS配置,并且不能保证它可以运行HTTPS。

在这种情况下,也许最好的选择是逐一加密 SOAP 消息的部分(毕竟,您可能不需要加密整个消息 - 只需要加密某些敏感字段?),或者您可以选择使用一个 HttpModule 来拦截所有消息并对内容进行操作。在任何一种情况下,您可能都必须提供自定义代理。

也许我很天真,但是强制通过 https 进行通信可以接受吗?我开发了在 2.0 上运行的 Web 服务,并且仅让 IIS 在虚拟目录上强制执行 https 就取得了成功。

或者,或者此外,您可以检查 HttpRequest.IsSecureConnection 属性.

实际上,我们在 Web 服务中使用了 WSE 3.0,它最初是在 WCF 之前开发的。为了安全起见,我们使用基于 System.Security 中的加密类构建的基于 SAML 令牌的系统。

它运作得很好。然而,这个方法绝非“简单”。

您可以使用 System.Security.Cryptography 扩展在 C# 中使用参数加密。

加密你的参数并解密它们会更困难,但更安全。

如何:使用对称 (Rijndael) 密钥加密和解密数据 (C#/VB.NET)

我正在将这种方法用于 OTP(一次性密码)网络服务,它对我来说效果很好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top