0

我實現了一個自定義成員資格提供程序。 我也實現了我自定義的AES Encryption/Decryption,覆蓋了MembershipProvider的抽象EncryptPassword/DecryptPassword。加密/解密自定義MembershipProvider中的密碼使用情況?

但是,當我觸發ValidateUser時,密碼不會自動轉換,我是否錯過了什麼?

它應該被自動調用還是必須從我的代碼中調用此方法?

+1

我不熟悉的MembershipProvider,但它幾乎總是不正確的存儲解密密碼。你應該使用像SHA256這樣的單向散列。如果您必須使用該密碼對另一個明文身份驗證系統進行身份驗證,則會出現異常。 – MichaelGG 2009-06-28 10:55:28

+0

im將加密密碼存儲在varbinary中。 它們在用戶登錄時得到解密。 – Shimmy 2009-06-28 22:11:15

回答

2

你需要自己調用你的加密程序。

+0

因此,我可以將DecryptPassword函數聲明爲新的? 即公共新字符串DecriptPassword(byte [] password) 而不是基類模式public byte [] DecryptPassword(byte [] password)? – Shimmy 2009-06-28 07:14:47

0

您需要包括你的加密/解密方法的調用,像應該做的:

public override bool ValidateUser(string username, string password) 
{ 
    string password=query to get the password from the db/users_list; 

    return (CheckPassword(password, storedPassword)); 
} 

private bool CheckPassword(string password, string dbpassword) 
{ 
    string pwd1 = password; 
    string pwd2 = dbpassword; 

    pwd2 = UEncodePassword(dbpassword); 

    if (pwd1 == pwd2) return true; 

    return false; 
} 

private string UEncodePassword(string encodedPassword) 
{ 
    string password = encodedPassword; 
    password = Encoding.Unicode.GetString(DecryptPassword(Convert.FromBase64String(encodedPassword))); 

    return password; 
}