2014-07-23 4 views
0

암호 해시 & 암호 해싱을 수행하려면 어떻게해야합니까? 인터넷에서 많은 예제를 발견했지만 여전히 잘 수행 할 수 없습니다. 나는이 방법을 사용할 경우SQL Server 2008에서 C#으로 보안 자격 증명을 관리하기 위해 해시 및 솔트를 수행하는 방법

나는이 소금을 생성하는 코드와 해시

public static byte[] GetSalt() 
{ 
    var p = new RNGCryptoServiceProvider(); 
    var salt = new byte[16]; 
    p.GetBytes(salt); 
    return salt;  
} 

public static byte [] GetSecureHash(string password, byte[] salt) 
{ 
    Rfc2898DeriveBytes PBKDF2 = new Rfc2898DeriveBytes(password, salt); 
    return PBKDF2.GetBytes(64); 
} 

을하지만, 나도 몰라, 나는이있다 : 여기

SqlParameter SalContraseña = new SqlParameter("@SalContraseña", SqlDbType.Binary, 16); 
SalContraseña.Value = GetSalt(); 
cmd.Parameters.Add(SalContraseña); 

SqlParameter HashContraseña = new SqlParameter("@HashContraseña",SqlDbType.Binary, 64); 
HashContraseña.Value = GetSecureHash(Password,byte[]); 
cmd.Parameters.Add(HashContraseña); 

나는 암호를 적용 그리고 해시 SqlParameter,하지만 올바른지 또는이 올바른 양식이 있는지 확실하지 않습니다.

사용자를 생성하는 형식으로이 코드를 적용한 다음이 코드를 적용하여 해시로 암호를 확인하는 방법을 알지 못합니다. 사용자가 암호를 입력하는 방식으로이 작업을 수행해야합니다. 기록됩니다.

+0

소금에 절인 암호와 해시 된 암호를 데이터베이스에 저장할 수 있습니까? – fotijr

답변

1

원래 암호 해시를 생성하는 데 사용한 소금을 저장해야합니다. 그런 다음 사용자가 로그인을 시도하면 해당 소금 값을 검색하고 동일한 hasing 알고리즘을 사용하여 입력 한 암호와 원래 사용 된 소금 값을 해시합니다. 결과 해시가 저장된 사용자의 해시와 일치하면 인증이 성공한 것입니다.