컴공생의 다이어리

[c++] 강력한 패스워드 만들기 본문

Development/C & C++

[c++] 강력한 패스워드 만들기

컴공 K 2021. 2. 17. 01:36

문제

다음 기준을 충족하는 강력한 패스워드를 생성하는 프로그램을 작성하시오.

  • 길이는 최소한 6이상이어야 함

  • 최소한 1개 이상의 숫자가 있어야 함

  • 최소한 1개 이상의 영어 대문자가 있어야 함

  • 최소한 1개 이상의 영어 소문자가 있어야 함

  • 최소한 1개 이상의 특수문자가 있어야 함

  • 특수문자 : !@#$%^&*()-+

 

 

코드

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

string WARNINGS[] ={
"길이는 최소한 6이상이어야 합니다.",
"최소한 1개 이상의 숫자가 있어야 합니다.",
"최소한 1개 이상의 영어 소문자가 있어야 합니다.",
"최소한 1개 이상의 영어 대문자가 있어야 합니다.",
"최소한 1개 이상의 특수 문자가 있어야 합니다."
};

int main(){
	string password;

	int i, j, Digit, Lower, Upper, Special;
	int a;
	int specialList[12] = { '!','@','#','$','%','^','&','*','(',')','-','+' };

	Digit = 0;
	Lower = 0;
	Upper = 0;
	Special = 0;

	while (1){
		cout << "password : ";
		cin >> password;
		if (password.length() >= 1 && password.length() <= 20)
			break;
		else
			cout << "다시 입력하세요!" << endl;
	}

	a = password.length();
	for (i = 0; i < a; i++)	{
		if (48 <= password[i] && password[i] <= 57) //Digit check
			Digit = 1;
		else if (97 <= password[i] && password[i] <= 122) //Lower_case check
			Lower = 1;
		else if (65 <= password[i] && password[i] <= 90) //Upper_case check
			Upper = 1;
		else{ //Special_characters check
			for (j = 0; j < 12; j++){
				if (password[i] == specialList[j]){
					Special = 1;
					break;
				}
			}
		}
	}
	if (a < 6)
		cout << WARNINGS[0] << endl;
	if (Digit == 0)
		cout << WARNINGS[1] << endl;
	if (Lower == 0)
		cout << WARNINGS[2] << endl;
	if (Upper == 0)
		cout << WARNINGS[3] << endl;
	if (Special == 0)
		cout << WARNINGS[4] << endl;
	if (a >= 6 && Digit == 1 && Lower == 1 && Upper == 1 && Special == 1)
		cout << "적절한 패스워드 입니다!" << endl;
	return 0;
}

 

 

출력결과

728x90
반응형
Comments