如何在不使用HTTPS和&amp ;;的情况下加密ASMX Web服务请求和响应SSL

时间:2015-04-09 13:22:21

标签: c# asp.net web-services encryption

我遇到了一篇msdn文章https://msdn.microsoft.com/en-us/library/ms972410.aspx?f=255&MSPPError=-2147217396,它引导了如何设计一个以加密形式发送响应的Web服务,而不使用HTTPS& SSL。我们只需要以加密形式为返回响应添加一个属性。示例代码如下

public class CreditCardService {

  [WebMethod]
  [EncryptionExtension(Encrypt=EncryptMode.Response)]
  public string GetCreditCardNumber() {
    return "MC: 4111-1111-1111-1111";
  }
}

1)我想知道我需要包含什么dll因此我可以使用此属性 [EncryptionExtension(Encrypt = EncryptMode.Response)] 进行网络方法?

2)我可以使用此属性 EncryptionExtension 加密请求和响应吗?我不是在开发环境之前所以无法测试它。所以请一些人分享知识。

3)我主要担心的是加密我的网络服务请求和响应,而不使用SSL& HTTPS,我也不喜欢编写任何加密请求和响应xml的Web服务的例程。我想要一些自动加密我的Web服务请求和响应的方法。引导我。感谢

1 个答案:

答案 0 :(得分:1)

如果你阅读整篇文章,你会发现你需要实现自己的SOAP扩展,它将提供必要的加密。 SOAP扩展应如下所示:

public class EncryptionExtension : SoapExtension { 

  public override void ProcessMessage(SoapMessage message) {
    switch (message.Stage) {

      case SoapMessageStage.BeforeSerialize:
       break;

      case SoapMessageStage.AfterSerialize:
        Encrypt();
        break;

      case SoapMessageStage.BeforeDeserialize:
        Decrypt();
        break;

      case SoapMessageStage.AfterDeserialize:
        break;

      default:
        throw new Exception("invalid stage");
      }
   }
...
}

本文的其余部分介绍了如何实现加密算法等。

应该相当容易