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);

 

 

 

arrow
arrow
    創作者介紹
    創作者 蔡官宏 的頭像
    蔡官宏

    MVC5開發疑難雜病論

    蔡官宏 發表在 痞客邦 留言(0) 人氣()