C# 简单的ASP.NET密码哈希类问题
我正试图对我即将完成的大学项目应用一些安全措施。这种安全性有些粗略,所以我很想放弃,将密码保存为明文或转换为base64,然后做一些用户更明显的事情 在我放弃之前,我要这么做。这是我第一次尝试在这里问任何问题,所以请温柔一点 我决定实现这个MSDN代码不会太难。 事实证明,确实如此。我发现了错误 System.FormatException:输入字符串的格式不正确 代码C# 简单的ASP.NET密码哈希类问题,c#,asp.net,hash,passwords,salt,C#,Asp.net,Hash,Passwords,Salt,我正试图对我即将完成的大学项目应用一些安全措施。这种安全性有些粗略,所以我很想放弃,将密码保存为明文或转换为base64,然后做一些用户更明显的事情 在我放弃之前,我要这么做。这是我第一次尝试在这里问任何问题,所以请温柔一点 我决定实现这个MSDN代码不会太难。 事实证明,确实如此。我发现了错误 System.FormatException:输入字符串的格式不正确 代码 binarySaltValue[0] = byte.Parse( salt.Substring( 0, 2 ), Syste
binarySaltValue[0] = byte.Parse( salt.Substring( 0, 2 ), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat );
老实说,我不完全理解这个代码
private string GetHashedString(string _PW)
{
string _HashedPW = "";
SHA512 sha = new SHA512CryptoServiceProvider();
byte[] result;
StringBuilder strBuilder = new StringBuilder();
sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(_PW));
result = sha.Hash;
for (int i = 0; i < result.Length; i++)
{
strBuilder.Append(result[i].ToString("x2"));
}
_HashedPW = strBuilder.ToString();
return _HashedPW;
}
private string GetHashedString(string\u PW)
{
字符串_HashedPW=“”;
SHA512 sha=新的SHA512CryptoServiceProvider();
字节[]结果;
StringBuilder strBuilder=新StringBuilder();
ComputeHash(ascienceoding.ASCII.GetBytes(_PW));
结果=sha.Hash;
for(int i=0;i
您的特定错误可能是变量salt
包含非数字字符,因此salt的NumberStyle参数(System.Globalization.NumberStyle.HexNumber)格式不正确。您是对的。我为salt实现了一个非常简单的“随机文本”生成器。我在明文的末尾加了一个随机的盐,把它扔进了SHA256(我没有512的空间,但我以后会的)。太棒了很高兴它有帮助!你要如何再次解开它来检查密码?你没有!如果需要检查用户输入的密码是否正确,只需使用用于在用户输入中存储密码的相同加密方法即可。如果两个加密值匹配,则它们输入相同的输入(希望不是“password1234”)。取消散列某人密码的另一个原因是当用户忘记密码时。虽然这在当时是一种正常的做法,但现在你只需验证用户的合法性,并允许他们重置密码——通常通过发送到帐户电子邮件地址的链接。