2

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);
    }

Student コレクションを取得すると、パスワード フィールドに System.Byte[] と表示されます。

4

3 に答える 3

4

Convert.ToBase64String メソッドを使用できます。

student.Password = Convert.ToBase64String(passwordHash);
于 2012-04-22T00:12:11.467 に答える
2

一連のバイトは無限の方法で文字列として表すことができるため、質問に対する有効な答えは 1 つではありません。

Convert.ToBase64String() を使用するために既に提供されているソリューションは有効ですが、使用できる唯一のソリューションではありません。

msdn のHashAlgorithm.ComputeHash メソッドのドキュメントを見ると、 バイト配列は次のようなコードを使用して 16 進数表現に変換されます。

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

これは単なる別の例です。

于 2012-04-22T00:34:41.880 に答える
-2
student.Password = Encoding.GetString(passwordHash);

これにより、バイト配列が文字列に変換されます。Google で簡単に検索すると、バイト配列の操作などについて知っておく必要があるすべての情報が表示されます。

于 2012-04-21T23:58:56.937 に答える