C# 在服务器端实现MD5halsh salted算法时,如何在客户端加密密码

C# 在服务器端实现MD5halsh salted算法时,如何在客户端加密密码,c#,md5,salt,C#,Md5,Salt,我已经实现了一个md5散列盐析算法 使用此算法,我将哈希密码和salt值保存到数据库中。 然后在登录页面上检索登录用户的salt值,获取密码字节,添加salt值和计算哈希,并将结果与保存的密码进行匹配,它工作正常,但我仍然能够在客户端以明文形式看到我的密码值 如何在客户端将密码值与md5哈希盐析算法一起加密?您的做法是正确的。在不知道salt的情况下,您将无法在客户端散列密码(并且将salt传递给客户端不是一个好主意)。如果您希望客户端发送的数据是安全的,请使用 注意:如果您使用ssl,客户端仍

我已经实现了一个md5散列盐析算法

使用此算法,我将哈希密码和salt值保存到数据库中。 然后在登录页面上检索登录用户的salt值,获取密码字节,添加salt值和计算哈希,并将结果与保存的密码进行匹配,它工作正常,但我仍然能够在客户端以明文形式看到我的密码值


如何在客户端将密码值与md5哈希盐析算法一起加密?

您的做法是正确的。在不知道salt的情况下,您将无法在客户端散列密码(并且将salt传递给客户端不是一个好主意)。如果您希望客户端发送的数据是安全的,请使用


注意:如果您使用ssl,客户端仍将
能够以明文形式查看我的密码值
,因为数据只有在发送之前才会加密。

您这样做是正确的。在不知道salt的情况下,您将无法在客户端散列密码(并且将salt传递给客户端不是一个好主意)。如果您希望客户端发送的数据是安全的,请使用


注意:如果您使用ssl,客户端仍将能够以明文形式查看我的密码值,因为数据只有在发送之前才会加密。

您可以使用它在客户端安全地存储密码。使用SafeString类将密码存储在内存中,如@PLB所述,使用加密连接。

您可以使用它在客户端安全地存储密码。使用SafeString类将密码存储在内存中,如@PLB所述,使用加密连接。

如果您担心在文本框中键入的密码。 然后将textbox的TextMode更改为密码

像这样

<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>

如果您担心在文本框中键入的密码。 然后将textbox的TextMode更改为密码

像这样

<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>

解决这个问题有很多不同的方法,我现在能想到的最简单的方法就是使用一些挑战;服务器发送客户端必须用作salt的值。服务器确保该值是唯一的,没有过期,并且只使用一次(这确保不可能进行重播攻击)

这确保不会发送纯文本密码,而只发送散列密码。服务器可以信任客户机(信任程度与执行纯文本身份验证时相同),而不是简单地重新发送一些旧的散列,因为使用“一次性salt”计算散列需要明文密码

另一种更复杂(更安全)的方法是从密码生成RSA密钥对,其中服务器拥有公钥,客户端拥有私钥。客户端还具有服务器公钥的副本。用户输入密码,只有正确的密码才能获得正确的rsa密钥


然后,用户使用服务器的公钥对请求进行加密,然后使用用户的私钥对请求进行签名。然后,只有服务器可以解密请求,服务器可以通过使用用户的公钥验证签名来验证发送者是否真的是正确的用户。而反应正好相反。要增加一些安全性,你应该像我之前写的那样添加一些独特的“salt”,以确保重播攻击是不可能的。

有许多不同的方法来解决这个问题,我现在能想到的最简单的方法就是使用某种挑战;服务器发送客户端必须用作salt的值。服务器确保该值是唯一的,没有过期,并且只使用一次(这确保不可能进行重播攻击)

这确保不会发送纯文本密码,而只发送散列密码。服务器可以信任客户机(信任程度与执行纯文本身份验证时相同),而不是简单地重新发送一些旧的散列,因为使用“一次性salt”计算散列需要明文密码

另一种更复杂(更安全)的方法是从密码生成RSA密钥对,其中服务器拥有公钥,客户端拥有私钥。客户端还具有服务器公钥的副本。用户输入密码,只有正确的密码才能获得正确的rsa密钥


然后,用户使用服务器的公钥对请求进行加密,然后使用用户的私钥对请求进行签名。然后,只有服务器可以解密请求,服务器可以通过使用用户的公钥验证签名来验证发送者是否真的是正确的用户。而反应正好相反。要增加一些安全性,您应该像我前面写的那样添加一些独特的“salt”,以确保重播攻击是不可能的。

这个问题很难回答,您不清楚要做什么。你能详细说明一下吗?这个问题很难理解,不清楚你想做什么。你能详细说明一下吗?