Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 비밀번호 유효성 검사하기: 강력한 암호 조건 확인 방법


비밀번호의 유효성을 검사하려면 웹사이트에 회원가입할 때 비밀번호를 생성하는 과정을 떠올려 보면 쉽게 이해할 수 있습니다.

비밀번호를 만들 때 대부분의 웹사이트에서는 강력한 비밀번호를 요구하며, 일반적으로 다음과 같은 유효성 검사 규칙을 적용합니다 −

  • 최소 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를 반환하고, 모든 조건을 통과하면 유효한 비밀번호로 판단합니다. 필요에 따라 숫자 포함 여부와 같은 추가 규칙도 손쉽게 확장하여 적용할 수 있습니다.