잠시 동안이 문제가 발생했습니다. 나는 사용자가 입력 한 단어를 회원 DB에있는 암호와 비교할 필요가있다. 암호는 해시되고 소금입니다. 설명서가 부족하기 때문에 소금이 암호에 추가 된 다음 암호가 어떻게 생성되는지 해시할지 여부는 알 수 없습니다.ASP.NET 회원 C# - 기존 암호/해시 비교 방법
일치하지 않을 수 있습니다. 함수에서 반환 된 해시는 DB의 해시와 일치하지 않으며 사실 동일한 암호임을 알고 있습니다. Microsoft는 다른 방법으로 암호를 해시하는 것 같습니다.
누군가 통찰력을 가지길 바랍니다.
여기 내 코드입니다 :
protected void Button1_Click(object sender, EventArgs e)
{
//HERE IS THE PASSWORD I USE, SAME ONE IS HASHED IN THE DB
string pwd = "Letmein44";
//HERE IS THE SALT FROM THE DB
string saltVar = "SuY4cf8wJXJAVEr3xjz4Dg==";
//HERE IS THE PASSWORD THE WAY IT STORED IN THE DB AS HASH
string bdPwd = "mPrDArrWt1+tybrjA0OZuEG1P5w=";
// FOR COMPARISON I DISPLAY IT
TextBox1.Text = bdPwd;
// HERE IS WHERE I DISPLAY THE return from THE FUNCTION, IT SHOULD MATCH THE PASSWORD FROM THE DB.
TextBox2.Text = getHashedPassUsingUserIdAsSalt(pwd, saltVar);
}
private string getHashedPassUsingUserIdAsSalt(string vPass, string vSalt)
{
string vSourceText = vPass + vSalt;
System.Text.UnicodeEncoding vUe = new System.Text.UnicodeEncoding();
byte[] vSourceBytes = vUe.GetBytes(vSourceText);
System.Security.Cryptography.SHA1CryptoServiceProvider vSHA = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] vHashBytes = vSHA.ComputeHash(vSourceBytes);
return Convert.ToBase64String(vHashBytes);
}
@ 모에, 당신은 최고입니다, 당신은 나를 구 했어요. 나는 너에게 고마워하는 방법을 모른다. 할 수있는 것이 있다면 이름을 지어주세요. 여러분 모두에게 감사드립니다. 여러분 모두는 매우 도움이되었습니다. 나는 언젠가 당신만큼 좋고 다른 사람들을 도울 수 있기를 바랍니다. Steve – Steve
위 코드를 해시하고 보안 답변을 비교하는 경우 SqlMembershipProvider가 수행하는 'passwordAnswer.ToLower (CultureInfo.InvariantCulture)'를 반드시 수행하십시오. ToLower()가 없으면 계산 된 해시는 저장된 보안 해시와 다를 수 있습니다. –