字节为哈希函数的字符串?

时间:2012-04-21 23:47:51

标签: c# linq web-services rest hash

如何将passwordHash转换为字符串?

    public void AddStudent(Student student)
    {
        student.StudentID = (++eCount).ToString();
        byte[] passwordHash = Hash(student.Password, GenerateSalt());
        student.Password = passwordHash; //this line?
        student.TimeAdded = DateTime.Now;
        students.Add(student);
    }

如果我尝试:

    public void AddStudent(Student student)
    {
        student.StudentID = (++eCount).ToString();
        byte[] passwordHash = Hash(student.Password, GenerateSalt());
        student.Password = Convert.ToString(passwordHash); //this line?
        student.TimeAdded = DateTime.Now;
        students.Add(student);
    }

当我获取我的学生集合时,密码字段会显示System.Byte [],因为我想要获取哈希/盐渍密码?

3 个答案:

答案 0 :(得分:4)

您可以使用Convert.ToBase64String Method

student.Password = Convert.ToBase64String(passwordHash);

答案 1 :(得分:2)

字节序列可以无限方式表示为字符串,因此您的问题没有一个有效的答案。

使用Convert.ToBase64String()提供的解决方案是有效的,但不是唯一可以使用的解决方案。

如果你查看HashAlgorithm.ComputeHash method on msdn的文档  使用如下代码以十六进制表示形式转换字节数组:

        var sb = new StringBuilder();
        for (int i = 0; i < passwordHash.Length; i++)
            sb.Append(passwordHash[i].ToString("x2"));
        student.Password = sb.ToString();

这只是另一个例子。

答案 2 :(得分:-2)

student.Password = Encoding.GetString(passwordHash);

这会将字节数组转换为字符串。 快速谷歌搜索将告诉您有关操纵字节数组等所需的一切信息......