C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でパスワードの強度をチェックするプログラム


パスワード文字を含む文字列入力が与えられた場合、タスクはパスワードの強度をチェックすることです。

パスワードの強みは、パスワードが簡単に推測されるか、解読されるかを判断するときです。強さは、弱い、平均、強いから変化する必要があります。強度を確認するには、以下の点を確認する必要があります-

  • パスワードは8文字以上である必要があります。
  • 小文字のアルファベットを1つ含める必要があります。
  • 大文字のアルファベットを1つ含める必要があります
  • 数字が含まれている必要があります
  • 次のような特殊文字が含まれている必要があります:!@#$%^&*()> <,. + =-

簡単に推測できるパスワード「tutorialspoint」があるように、彼が与えたパスワードは小文字しか含まれていないので「弱い」と言えますが、パスワード「Tutorialspoint @ 863!」大文字と小文字の両方、数字、特殊文字があり、8文字より長いため、パスワードを強化するためのすべての条件を満たすため、強力です。

強力なパスワードの特性の半分以上を満たすパスワードがある場合、そのパスワードは中程度と見なされます。パスワード「tutorialspoint12」と同様に、小文字、数字、長さが8文字を超える中程度と見なされます。

Input: tutoriAlspOint!@12
Output: Strength of password:-Strong
Explanation: Password has 1 lowercase, 1 uppercase, 1 special character, more than 8 characters long and a digit, hence the password is strong.
Input: tutorialspoint
Output: Strength of password:-Weak

特定の問題を解決するために使用するアプローチ

  • パスワードの文字列出力を取得します。
  • パスワードの強度を判断するためのすべての要素について、パスワードを確認してください。
  • 要因に応じて、パスワードの強度を印刷します。

アルゴリズム

Start
   Step 1 ⇒ In function void printStrongNess(string& input)
      Declare and initialize n = input.length()
      Declare bool hasLower = false, hasUpper = false
      Declare bool hasDigit = false, specialChar = false
      Declare string normalChars = "abcdefghijklmnopqrstu"
      "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "
      Loop For i = 0 and i < n and i++
         If (islower(input[i]))
            Set hasLower = true
         If (isupper(input[i]))
            Set hasUpper = true
         If (isdigit(input[i]))
            Set hasDigit = true
            Set size_t special = input.find_first_not_of(normalChars)
         If (special != string::npos)
            Set specialChar = true
      End Loop
      Print "Strength of password:-"
      If (hasLower && hasUpper && hasDigit &&
         specialChar && (n >= 8))
         Print "Strong"
      else if ((hasLower || hasUpper) &&
            specialChar && (n >= 6))
         Print "Moderate"
      else
         print "Weak"
   Step 2 ⇒ In function int main()
      Declare and initialize input = "tutorialspoint!@12"
      printStrongNess(input)
Stop
を宣言して初期化します

#include <iostream>
using namespace std;
void printStrongNess(string& input) {
   int n = input.length();
   // Checking lower alphabet in string
   bool hasLower = false, hasUpper = false;
   bool hasDigit = false, specialChar = false;
   string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ";
   for (int i = 0; i < n; i++) {
      if (islower(input[i]))
         hasLower = true;
      if (isupper(input[i]))
         hasUpper = true;
      if (isdigit(input[i]))
         hasDigit = true;
      size_t special = input.find_first_not_of(normalChars);
      if (special != string::npos)
         specialChar = true;
   }
   // Strength of password
   cout << "Strength of password:-";
   if (hasLower && hasUpper && hasDigit &&
      specialChar && (n >= 8))
      cout << "Strong" << endl;
   else if ((hasLower || hasUpper) &&
      specialChar && (n >= 6))
      cout << "Moderate" << endl;
   else
      cout << "Weak" << endl;
}
int main() {
   string input = "tutorialspoint!@12";
   printStrongNess(input);
   return 0;
}

出力

Strength of password:-Moderate

  1. C++でべき等行列をチェックするプログラム

    行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列がべき等行列であるかどうかを確認する必要があります かどうか。 べき等行列 行列「M」はべき等行列と呼ばれます 行列「M」にそれ自体を掛けたものだけが同じ行列「M」を返す場合、つまり M * M=M。 以下の例のように- 上記の行列はそれ自体で乗算され、同じ行列を返すと言えます。したがって、マトリックスはIデポテンツマトリックスです。 。 例 Input: m[3][3] = { {2, -2, -4},    {-1, 3,

  2. C++で対角行列とスカラー行列をチェックするプログラム

    行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列が対角であるかどうかを確認する必要があります およびスカラー 対角の場合、行列かどうか およびスカラー マトリックスを作成し、結果にyesを出力します。 対角行列 正方行列m[][]は、主対角を除く要素がゼロの場合にのみ対角行列になります。 下の図のように- ここで、赤の要素は主対角線であり、主対角線がゼロであることを除いてゼロ以外の残りの要素であり、対角行列になっています。 。 例 Input: m[3][3] = { {7, 0, 0},