본문 바로가기
Solution_/C언어 콘서트

[c언어 콘서트] 10장 1번 (암호 생성)

by 낭람_ 2018. 10. 11.
반응형

[10장 1번]


사용자로부터 암호를 입력받는다. 사용자의 암호가 해킹에 대한 안전도가 강력한지를 검사한다. 만약 암호 안에 대문자, 소문자, 숫자가 모두 들어있으면 강력한 암호로 간주한다. 만약 사용자의 암호가 3가지 종류의 문자를 다 가지고 있지 않으면 프로그램은 보안을 위하여 더 강력한 암호를 고려하라고 제안한다.



[풀이]

#include<stdio.h>

int check(char *str, char *str_check);
void set(char *str_check);

int main() {
char str[100];
char str_check[3] = { 0, };
do{
set(str_check);
printf("암호를 생성하시오 : ");
scanf("%s", str);
} while (check(str, str_check));
printf("적정한 암호입니다. \n");
return 0;
}

int check(char *str, char *str_check) {
int i;
for (i = 0; str[i]; i++) {
if ('0' < str[i] && '9' > str[i]) {
str_check[0] = 1;
}
else if ('a' < str[i] && 'z' > str[i]) {
str_check[1] = 1;
}
else if ('A' < str[i] && 'Z' > str[i]) {
str_check[2] = 1;
}
}
for (i = 0; i < 3; i++) {
if (str_check[i] != 1) {
printf("숫자, 소문자, 대문자를 섞어서 암호를 다시 만드세요! \n");
return 1;
}
}
return 0;
}
void set(char *str_check) {
int i = 0;
for (i = 0; i < 3; i++) {
str_check[i] = 0;
}
}


반응형

댓글