[英]Role of PasswordSalt witn SimpleMembershipProvider
我分析了SimpleMembershipProvider
的CreateAccount
方法,發現其中的PasswordSalt
未存儲在數據庫中,僅保存了hashedpassword
PasswordSalt
。
將PasswordSalt
保存在數據庫中是否不必要?
int insert = db.Execute(@"INSERT INTO [" + MembershipTableName + "] (UserId, [Password], PasswordSalt, IsConfirmed, ConfirmationToken, CreateDate, PasswordChangedDate, PasswordFailuresSinceLastSuccess)"
+ " VALUES (@0, @1, @2, @3, @4, @5, @5, @6)", uid, hashedPassword, String.Empty /* salt column is unused */, !requireConfirmationToken, dbtoken, DateTime.UtcNow, defaultNumPasswordFailures);
節省鹽分很普遍,但沒有必要。 這主要取決於鹽的產生方式。
如果鹽僅依賴於數據庫中已經存在的信息(例如UserId),則可以使用該信息重新創建鹽。
另一種選擇是將鹽與密碼哈希連接起來,而無需使用明確的分隔符。 因此,可能是密碼哈希的前8個字節實際上是鹽。
然后,有可能不使用鹽。 因此,無需填充它。 實際情況似乎在這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.