如何将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 [],因为我想要获取哈希/盐渍密码?
答案 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);
这会将字节数组转换为字符串。 快速谷歌搜索将告诉您有关操纵字节数组等所需的一切信息......