비밀번호의 유효성을 검사하려면 웹사이트에 회원가입할 때 비밀번호를 생성하는 과정을 떠올려 보면 쉽게 이해할 수 있습니다.
비밀번호를 만들 때 대부분의 웹사이트에서는 강력한 비밀번호를 요구하며, 일반적으로 다음과 같은 유효성 검사 규칙을 적용합니다 −
최소 8자, 최대 14자
대문자 1개 이상 포함
특수 문자 1개 이상 포함
소문자 1개 이상 포함
공백(화이트 스페이스) 미포함
이제 각 조건을 C# 코드로 하나씩 확인하는 방법을 살펴보겠습니다.
1. 최소 8자, 최대 14자 확인
if (passwd.Length < 8 || passwd.Length > 14) return false;
2. 대문자 포함 여부 확인
if (!passwd.Any(char.IsUpper)) return false;
3. 소문자 포함 여부 확인
if (!passwd.Any(char.IsLower)) return false;
4. 공백 미포함 확인
if (passwd.Contains(" "))
return false;
5. 특수 문자 포함 여부 확인
string specialCh = @"%!@#$%^&*()?/>.<,:;'\|}]{[_~`+=-" + "\"";
char[] specialChArray = specialCh.ToCharArray();
foreach (char ch in specialChArray) {
if (passwd.Contains(ch))
return true;
}
전체 예제 코드
위의 모든 조건을 하나의 메서드로 통합하면 다음과 같습니다.
using System;
using System.Linq;
class Program {
static bool IsValidPassword(string passwd) {
// 길이 조건: 최소 8자, 최대 14자
if (passwd.Length < 8 || passwd.Length > 14)
return false;
// 공백 미포함
if (passwd.Contains(" "))
return false;
// 대문자 포함
if (!passwd.Any(char.IsUpper))
return false;
// 소문자 포함
if (!passwd.Any(char.IsLower))
return false;
// 숫자 포함 (보안 강화용 추가 조건)
if (!passwd.Any(char.IsDigit))
return false;
// 특수 문자 포함
string specialCh = @"%!@#$%^&*()?/>.<,:;'\|}]{[_~`+=-" + "\"";
return passwd.IndexOfAny(specialCh.ToCharArray()) >= 0;
}
static void Main() {
Console.WriteLine(IsValidPassword("MyPassw0rd!")); // True
Console.WriteLine(IsValidPassword("mypass")); // False
}
}
이처럼 각 조건을 순차적으로 검사하여 하나라도 충족하지 못하면 false를 반환하고, 모든 조건을 통과하면 유효한 비밀번호로 판단합니다. 필요에 따라 숫자 포함 여부와 같은 추가 규칙도 손쉽게 확장하여 적용할 수 있습니다.