0

我正在尝试为我正在完成的大学项目应用一些安全性。这种安全性有点让人一目了然,所以我很想放弃,将密码保存为纯文本或转换为 base64,并做一些对用户更直观的事情。

在我放弃之前,我在问。这是我第一次尝试在这里提出任何问题,所以请保持温和。

我决定实现这个 MSDN 代码不会太难。 http://msdn.microsoft.com/en-us/library/aa545602%28v=cs.70%29.aspx

事实证明,确实如此。我收到错误

System.FormatException:输入字符串的格式不正确。

对于代码

binarySaltValue[0] = byte.Parse( salt.Substring( 0, 2 ), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat );

老实说,我并不完全理解这段代码。

  1. SaltValueSize 应该是什么?提供的代码不提供它,任何参考也不提供。它也是大写的,所以它是一个对象吗?或者某个对象中的某个字段?
  2. 变量“hash”没有在任何地方定义,所以我只是用新的 MD5CryptoServiceProvider() 填充它。这是一个错误吗?
  3. 如果我没看错的话,字符串“salt”应该包含二进制文件,但它在运行时没有,它有乱码,同时所有崩溃的行都试图从“salt”解析二进制文件?为什么?

如果有人能解决这个问题或提供一个防白痴的异步哈希类,我将不胜感激。

(为我的随机用户名道歉,我不知道这是怎么回事)

4

1 回答 1

1

这是至少让您入门的基本方法(无盐)。它只是“散列”进来的字符串。

    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;
    }
于 2013-11-13T21:16:51.277 回答