2012-04-21 2 views
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); 
    } 

내 학생 수집 말할 것이다 암호 필드 GET System.Byte [] 여기서 내가 다시 해시/소금에 절인 암호를 얻기 위해 원하는대로?

답변

4

당신은 사용할 수 있습니다 ... 당신에게 등 당신이 바이트 배열을 조작에 대해 알아야 할 모든 것을 말할 것이다 Convert.ToBase64String Method :

student.Password = Convert.ToBase64String(passwordHash); 
-2
student.Password = Encoding.GetString(passwordHash); 

바이트 배열을 문자열로 변환합니다. 빠른 Google 검색

+2

모든 문자열을 일련의 바이트로 인코딩 할 수 있지만 모든 문자열을 문자열로 디코딩 할 수있는 것은 아닙니다. – dtb

+0

dtb : 정확 합니다만 문자열은 일련의 바이트입니다 (북미, 어쨌든). 따라서 컨텍스트에 따라이 솔루션이 작동합니다. 누군가가 원하는 결과를 얻지 못한다면, 내가 틀렸기 때문에가 아니라 오히려 그들의 디자인이나 질문이 그랬다. –

2

바이트의 시퀀스가 ​​문자열로 표현 될 수 무한한 방법으로 그래서 귀하의 질문에 유효한 답변이 하나도 없습니다.

Convert.ToBase64String()을 사용하여 이미 제공된 솔루션은 유효하지만 사용할 수있는 솔루션은 아닙니다. 당신이 바이트의 배열이 같은 코드를 사용하여 16 진수 표현으로 변환됩니다 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(); 

이것은 단지 단지 또 다른 예이다.

+0

내 큰 긴 어리석은 길은 전혀 필요하지 않았 니? –

관련 문제