close
我的專案使用了微軟內建認證模組(AspNet.Identity及Owin.Security)
一開始很好用,但一要進階微調就伸展不開手腳了,其一,
因為資安的要求,定期變更密碼,又要求不得與前三次密碼相同,要如何寫?
由於Rfc2898屬鹽加密, 每次隨機產生鹽讓即使同樣密碼,產生的HashPassword也不同,
所以無法直接比對前三次密碼
爬文看很久這篇文章才看懂Rfc2898鹽加密,
https://www.zendei.com/article/37603.html
想要全弄懂或自己寫CODE可看上文
因此找到關鍵字及關鍵功能 Crypto
Crypto提供VerifyHashedPassword方法(不用自己寫Code了)
https://docs.microsoft.com/zh-tw/dotnet/api/system.web.helpers.crypto?view=aspnet-webpages-3.2
引用System.Web.Helpers,透過呼叫方法即可認證 password 加密後和 MVhashedPassword, 是否相同,
if (Crypto.VerifyHashedPassword(hashedPassword, password))
{
//如此一來就可以比對資料表另外存的歷史HashPassword
}
隨機取得加鹽雜湊密碼則是用
var pwd = Crypto.HashPassword(password);
文章標籤
全站熱搜
留言列表