1

ユーザーがパスワードヒントにパスワードを入力しないようにするため、いくつかのコードを正しく作成しようとしています。私は、たとえ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; 
} 
+2

ヒント:ヒントにはパスワードのすべての文字が含まれており、同じ順序(逆順のdrowssap)になっています。しかし、私はこれまで遠くに行くつもりはない、より多くのルールは、ユーザーのためにちょうど迷惑である... –

+0

はい、間違いなく私は思ったので、私はp-a-s-s-w-o-r-dのように1文字だけでなく分離を防止するつもりだった。 – DesiBoyz

+0

私が意味することは、途中にいくつの「セパレータ」があるかにかかわらず、パスワードのすべての文字がヒントにも同じ順序で存在するかどうかを確認することです。p111a222s333s444w555666r777d。少し極端なケースが、私はあなたが私が意味するものを得ると思います。ハーフ・デシェント・パスワード(十分な長さおよび/または複雑な長さ)の場合、ヒントに同じ文字を書き込む可能性は、かなりゼロに近くなければなりません。別の注意:あなたは_characters_について話していますが、あなたがチェックしているのは_code units_(文字列はUnicode UTF-16でエンコードされたテキストです)です。同じではありません。 –

答えて

1

このような場合は、「どこまで行くのですか?」というケースがよくあります。すべてのケースをカバーする可能性は低いからです。これに加えて、明白で一人に予防すべきである何かは、それが他人に関係ないほどあいまいかもしれません。

ヒントを確認しても、パスワードの前向きまたは後ろ向きが一致しませんが、これを行うための明白なことはかなり簡単に複雑になります。あなたは、単に彼らはあなたがこの

string reversed = new string(hint.ToCharArray().Reverse().ToArray()); 
bool invalid = password.Compare(reversed); 
ような何かを行うことができます逆の場合をキャッチするために

bool invalid = password.Compare(hint); 

に一致するパスワードとヒントにフラグの例を比較

string password = [Password] 
string hint = [Password Hint] 

を持っていると仮定すると

もしあなたがこのようなものを持っているとお考えなら、

string hint = "P-a-s-s-w-o-r-d"; 

、あなたはスペーシング文字は、それがより複雑だし、あなたは注意する必要があるだろうわからない場合は、あなたが、しかし

bool invalid = password.Compare(hint.Replace("-","")); 

を比較し、それを置き換えることができますスペーシング文字を知っていますあなたは合法的なシナリオを無効であるとフラグを立てていません。

ヒントがパスワード+通常のスペースであるシナリオを除外したいと仮定します。 「パスワード」1つのアプローチは

  • がヒントに第一及び第二のパスワード文字間の間隔を探すかもし​​れない
  • パスワードに

さらに質問にヒントを比較する手順でヒントを通じて

  • ステップinclude

    • スペーシング文字は重要ですか?たとえば、P-a-s-s-s-w-o-r-dと比較して、P-a-s-s!s!s!s!s!s!s!
    • いくつのスペース文字を気にしていますか?たとえば、Pは20文字で始まり、asswordは有効ですか?

    これはおそらくあまりにも複雑になりすぎず、ヒントとパスワードの前後を比較することで十分だろうと言われています。

  • 関連する問題