Silverlight:加密web服务的用户名和密码

Silverlight:加密web服务的用户名和密码,silverlight,encryption,Silverlight,Encryption,加密不是我的职责 我正在用Silverlight3编写一个应用程序,它与web服务通信以验证用户。web服务不一定是在SSL下托管的。我正试图找到一种方法,在传递用户名和密码之前对其进行可逆加密,而不依赖于将密钥和salt硬编码到Silverlight程序集中。它不支持RSA(或任何非对称算法),因此我不能使用服务器上的公钥 有什么模式可以做这种事情吗?RSA确实是最好的方法,但实际上Silverlight 2或3库中都没有实现。在我看来,这真的应该被添加进去,尽管直到现在Silverlight

加密不是我的职责

我正在用Silverlight3编写一个应用程序,它与web服务通信以验证用户。web服务不一定是在SSL下托管的。我正试图找到一种方法,在传递用户名和密码之前对其进行可逆加密,而不依赖于将密钥和salt硬编码到Silverlight程序集中。它不支持RSA(或任何非对称算法),因此我不能使用服务器上的公钥


有什么模式可以做这种事情吗?

RSA确实是最好的方法,但实际上Silverlight 2或3库中都没有实现。在我看来,这真的应该被添加进去,尽管直到现在Silverlight 4才可能发生。不幸的是,定制RSA实现可能会非常痛苦,所以我认为它不太可行

这是我建议的解决方案。。。这当然不像从服务器发送公钥那么简单,但它仍然应该安全地完成这项工作

  • 使用该算法商定用于以后加密的密钥。这是为了在不安全的通道上工作,所以这里没有问题。有关C#实现,请参阅
  • 使用Diffie-Hellman exchange建立的密钥进行某种排序对称加密,通过连接发送用户名/密码。然后,服务器可以使用相同的密钥进行解密,虽然客户端和服务器都知道该密钥,但任何第三方都不知道该密钥。在这种情况下,对称加密算法的强度实际上并不重要。(如果我错了,请有人纠正我。)事实上,一个简单的XOR密码应该可以完成这项工作。似乎您也可以使用该标准,它包含在Silverlight BCL的
    System.Security.Cryptography
    命名空间中

  • 希望有帮助。如果您对其中任何一点都不清楚,请告诉我。

    这里有一个库,它在Silverlight中提供了RSA加密的开放源代码

    我发布了一个RSA库,它与.NET RSACryptoServiceProvider(PKCS和OAEP)兼容,并且符合RSA标准。它是开源的:


    看起来很理想。今晚我要试一试。好的,祝你好运!要补充的是,如果我链接到的Diffie Hellman的实现不能很好地工作,您可以尝试我作为Windows SSH服务器项目的一部分编写的实现:所以我认为这也需要Silverlight客户端上的Diffie Hellman实现?有没有这样的实现,而不必重写为SL编译的所有内容?