我有一個要求解密位於我的aspnet_Membership表中的加密(不是散列)密碼。在那個數據庫中,我看到了Password(加密)和PasswordSalt字段,並且可以查看我的web.config以查找machinekey> decryptionKey(validation =「SHA1」decryption =「AES」)。解密來自ASP.NET 2.0的'加密'密碼成員
注意:我很樂意使用Hashed密碼,但出於商業原因,我需要能夠使用會員的密碼,進入和從其他遠程系統使用SSO,因此使用Encrypted(絕對不使用Clear - yukky!)
鑑於所有這一切,肯定有一種方法來檢索密碼爲清晰,簡單和可讀的文本,即解密,但我真的很難找到任何網站,或在stackoverflow上的答案(和我在這裏查看所有「類似問題」和「類似題目的問題」),它解釋瞭如何做到這一點。
我發現MembershipProvider.DecryptPassword Method頁面,但我仍然無法解決如何在我的代碼中實際使用它。我還通過谷歌發現了其他頁面,但大多數密碼解密的例子似乎都沒有考慮salt和decrytionKey。
有沒有人有從他們各自的位置選擇密碼,passwordsalt和解密密鑰,並使用它們來解密ASP.NET 2.0成員資格加密密碼的直接示例?
SSO的全部要點是委派的身份驗證,而不是共享登錄憑據。你的商業理由是傾斜的。 – 2011-06-03 19:51:05
我不知道MembershipProvider是如何工作的,但並不是你有一個你不曾真正解密密碼的鹽漬密碼,你可以使用任何用戶輸入的密碼,將鹽加密方法,如果兩個加密結果匹配,則您被授予訪問權限。我懷疑你可以在沒有使用某種強力攻擊的情況下獲得明文密碼。 – 2011-06-03 19:54:22
夥計們,我很欣賞這些評論,雖然業務邏輯可能存在偏差,但這項要求仍然存在。 ASP.NET MembershipProvider給出了「清除」,「加密」和「散列」格式的密碼選項,強烈建議'加密'密碼可以解密 - 只是發現我的問題。 – QMKevin 2011-06-03 19:58:47