我正在嘗試糾正一些代碼,以防止用戶在密碼提示中輸入密碼。我正考慮防止用戶在其密碼提示中輸入密碼中的三個連續字符,即使它們被一個字符分隔,即p-a-s-s-w-o-r-d。在密碼提示中檢查密碼
我寫了下面的代碼,但是這可以防止密碼提示,如:密碼:p123a21312swert1這是太嚴格。這是因爲我從密碼提示中刪除了所有不在密碼中的字符。我有一個搜索,但無法找到任何相關的。
var strippedPwdHint = new string(sValue.Where(c => sCompareTo.ToCharArray().Contains(c)).ToArray());
for (var i = 0; i < (strippedPwdHint.Length - 2); i++)
{
if (!sCompareTo.Contains(strippedPwdHint.Substring(i, 3))) continue;
retVal = new ValidationResult(ErrorMessage);
break;
}
提示:提示包含密碼中的所有字符,並且它們的順序相同(或按相反順序排列)。但我不會走得太遠,規則往往不僅僅是爲用戶煩人...... –
是的,但我認爲我是想防止一個字符的分離,例如p-a-s-s-w-o-r-d。 – DesiBoyz
我的意思是檢查密碼中的所有字符是否以相同的順序出現在提示中,無論中間有多少個「分隔符」:p111a222s333s444w555o666r777d。有點極端的情況下,但我想你明白我的意思。對於一個不錯的口令(足夠長和/或足夠複雜),在提示中寫入相同字符的機率應該接近於零。另外需要注意的是:你正在討論_characters_,但是你要檢查的是_code units_(字符串是Unicode UTF-16編碼文本),它不一樣。 –