2012-06-04 4 views
3

SHA256.Create() 메서드를 사용할 때마다 항상 null 값을 반환합니다. 여기에 내가 암호를 암호화있는 방법 ...SHA256.Create()는 항상 null을 반환합니다.

private string EncryptPassword(string password) 
{ 
    SHA256 sha = SHA256.Create(password); 
    return BitConverter.ToString(sha.Hash); 
} 

디버거 변수 sha가 null 인 것을 알 수있다. 난 컨트롤러에 자신의 방법에 넣어 시도했지만 난 아직도 완전히 손실 오전 System.NullReferenceException

public String Index() 
{ 
    return BitConverter.ToString(SHA256.Create("Hello World").Hash); 
} 

를 얻을. 내가 분명히 잘못하고있는 것이 있습니까?

답변

6

예, Create()은 메시지를위한 것이 아니며 SHA256 구현을 지정합니다.

대신 구현 클래스 SHA256Managed을 사용하고 싶습니다.

http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha256managed.aspx

예 : ComputeHash 호출 하였다

using (var sha256 = new SHA256Managed()) 
{ 
    byte[] raw = Encoding.Default.GetBytes(password); 
    return sha256.ComputeHash(raw); 
} 
+0

+1 (http://msdn.microsoft.com/en-us/library/s02tk69a.aspx)를 계산하는 실제 해시 값 –

+0

ComputeHash()의 결과는 두 문자마다'-'로 해시를 구분합니다. 이것을 피할 수있는 방법이 있습니까? –

+0

@Sbossb 어떻게 해시 값을 표시하고 있습니까? – jglouie

관련 문제