我正在处理网络服务。用户将能够使用不同asp.net项目上的表单创建用户帐户。因此,当用户输入密码信息时,我需要存储加密到数据库中的信息。但是现在当用户通过Web服务发送用户凭据时,我需要用户发送该密码以用于安全目的。
现在我们如何才能拥有相同的ecrption程序,以便我能够验证请求。
答案 0 :(得分:4)
您想要的是使用HTTPS连接将密码从用户安全地传输到服务器。以下是有关如何使用IIS for HTTPS设置开发环境的说明 - scottgu link。
HTTPS协议将处理加密和解密,您只需处理服务器端的纯文本密码。
之后,在服务器端,您计算密码的哈希值并将其与存储在数据库中的哈希值进行比较。可以使用标准的ASP.NET SQL成员资格提供程序。
Jeff Atwood对存储和散列密码的问题有一个很好的解释 - coding horror link。
答案 1 :(得分:1)
您可以使用System.Security.Cryptography;
看看下面的内容:
http://jakkaj.wordpress.com/2007/10/27/encrypting-and-securing-web-service-traffic-without-ssl/
请记住,您提供的任何不使用SSL / TLS的“加密”都可能容易受到攻击
答案 2 :(得分:1)
如果用户的浏览器以任何方式知道如何加密您的密码,那么您就会失去理由,聪明的黑客可以提取该加密。
使用SSL将信息直接传递到您的应用程序基本上是在做您所要求的,并且是接受密码的可接受的安全方式。您只需要检查数据库中的加密版本。
您的应用程序接收到原始密码(浏览器和服务器负责加密/解密),然后您的应用程序对其进行加密并在数据库中查找匹配项。
使用Web服务完成此操作的另一种方法是使用单个登录步骤,该步骤返回用于进一步通信的过期令牌。 OAuth是最受欢迎的,所以在谷歌上搜索一下。