ユーザーがパスワードヒントにパスワードを入力しないようにするため、いくつかのコードを正しく作成しようとしています。私は、たとえ1文字(p-a-s-s-w-o-r-d)で区切られていても、ユーザーがパスワードヒントでパスワードから3文字連続することを防ぐことを考えていました。パスワードヒント内のパスワードを確認する
私は以下のコードを書いていますが、これはパスワードヒントのようなものです:パスワード: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;
}
ヒント:ヒントにはパスワードのすべての文字が含まれており、同じ順序(逆順のdrowssap)になっています。しかし、私はこれまで遠くに行くつもりはない、より多くのルールは、ユーザーのためにちょうど迷惑である... –
はい、間違いなく私は思ったので、私はp-a-s-s-w-o-r-dのように1文字だけでなく分離を防止するつもりだった。 – DesiBoyz
私が意味することは、途中にいくつの「セパレータ」があるかにかかわらず、パスワードのすべての文字がヒントにも同じ順序で存在するかどうかを確認することです。p111a222s333s444w555666r777d。少し極端なケースが、私はあなたが私が意味するものを得ると思います。ハーフ・デシェント・パスワード(十分な長さおよび/または複雑な長さ)の場合、ヒントに同じ文字を書き込む可能性は、かなりゼロに近くなければなりません。別の注意:あなたは_characters_について話していますが、あなたがチェックしているのは_code units_(文字列はUnicode UTF-16でエンコードされたテキストです)です。同じではありません。 –