728x90
반응형
비밀번호는 보안을 위해 특정한 규칙이 필요하다.
예를 들면 대/소문자, 숫자, 특수문자 포함과 같은
각 요구사항을 충족시켜야 한다.
개발자 입장에서는 이러한 요구사항에 따르도록
비밀번호 체크를 해줘야 한다.
직접 함수를 만들어 쓸 수도 있지만
정규 표현식을 이용하여 문자열 패턴을 검사할 수도 있다.
그것이 바로 'System.Text.RegularExpressions.Regex' 클래스이다.
System.Text.RegularExpressions.Regex
using System.Text.RegularExpressions;
public class PasswordValidator
{
public bool ValidatePassword(string password)
{
Regex regexSpecialChar = null; //특수문자
Regex regexNumber = null; //숫자
Regex regexAlphbetUpper = null; //대문자
Regex regexAlphbetLower = null; //소문자
//비밀번호는 최소 8자 이상, 영문 대소문자, 숫자, 특수문자 중 최소 1개 이상 포함
//string strPatternSC = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$";
//특수문자 체크
string strPatternSC = @"[!@#$%^&*()_+=\[{\]};:<>|./?,-]";
regexSpecialChar = new Regex(strPatternSC);
bool CheckPWSC = regexSpecialChar.IsMatch(password);
//숫자 체크
string strPatternNB = @"[0-9]+";
regexNumber = new Regex(strPatternNB);
bool CheckPWNB = regexNumber.IsMatch(password);
//알파벳 대문자 체크
string strPatternAU = @"[A-Z]+";
regexAlphbetUpper = new Regex(strPatternAU);
bool CheckPWAU = regexAlphbetUpper.IsMatch(password);
//알파벳 소문자 체크
string strPatternAL = @"[a-z]+";
regexAlphbetLower = new Regex(strPatternAL);
bool CheckPWAL = regexAlphbetUpper.IsMatch(password);
//조건에 하나라도 통과못하면..
if (!CheckPWSC || !CheckPWNB || !CheckPWAU || !CheckPWAL)
{
MessageBox.Show("비밀번호를 영어 대/소문자, 숫자, 특수문자가 포함되어야 합니다. ");
}
}
}
예제와 같이 작성하면
알파벳 대/소문자 체크, 숫자 체크, 특수문자 등을 체크하여
모든 조건이 만족했을 경우 통과하게 된다.
물론 예제를 위해 분리하여 따로 체크하였지만
string strPatternSC = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$";
와 같이 한 번에 체크를 해도 된다.
그리고 IsMatch 함수를 통하여 결괏값이 반환된다.
상황에 맞게끔 적용하자~!
728x90
반응형
'개발이야기 > C#' 카테고리의 다른 글
[C#] DevExpress TextEdit 사용하여 비밀번호 입력란 만들기 (0) | 2024.07.10 |
---|---|
[C#] BackgroundWorker를 이용한 다중 스레드 처리 (1) | 2024.07.05 |