728x90
반응형
실생활에 유용한 C# 비밀번호 생성기 만들기
이 예제에서는 사용자가 원하는 길이와 옵션(대문자, 소문자, 숫자, 특수문자 포함 여부)을 선택해 강력한 랜덤 비밀번호를 생성하는 콘솔 프로그램을 만들어봅니다.
주요 기능
- 비밀번호 길이 입력
- 대문자, 소문자, 숫자, 특수문자 포함 여부 선택
- 선택한 옵션에 따라 문자 집합 구성
- 랜덤하게 비밀번호 생성
using System;
using System.Text;
using System.Security.Cryptography;
class Program
{
static void Main()
{
Console.WriteLine("비밀번호 생성기");
Console.Write("비밀번호 길이 입력: ");
int length = int.Parse(Console.ReadLine());
Console.Write("대문자 포함? (y/n): ");
bool useUpper = Console.ReadLine().ToLower() == "y";
Console.Write("소문자 포함? (y/n): ");
bool useLower = Console.ReadLine().ToLower() == "y";
Console.Write("숫자 포함? (y/n): ");
bool useDigit = Console.ReadLine().ToLower() == "y";
Console.Write("특수문자 포함? (y/n): ");
bool useSpecial = Console.ReadLine().ToLower() == "y";
string password = GeneratePassword(length, useUpper, useLower, useDigit, useSpecial);
Console.WriteLine($"생성된 비밀번호: {password}");
}
static string GeneratePassword(int length, bool useUpper, bool useLower, bool useDigit, bool useSpecial)
{
const string UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string LOWER = "abcdefghijklmnopqrstuvwxyz";
const string DIGIT = "0123456789";
const string SPECIAL = "!@#$%^&*()-_=+[]{};:'\",./?`~";
StringBuilder charPool = new StringBuilder();
if (useUpper) charPool.Append(UPPER);
if (useLower) charPool.Append(LOWER);
if (useDigit) charPool.Append(DIGIT);
if (useSpecial) charPool.Append(SPECIAL);
if (charPool.Length == 0)
throw new ArgumentException("최소 한 가지 옵션은 선택해야 합니다.");
StringBuilder password = new StringBuilder();
using (var rng = new RNGCryptoServiceProvider())
{
byte[] buffer = new byte[4];
for (int i = 0; i < length; i++)
{
rng.GetBytes(buffer);
int idx = BitConverter.ToInt32(buffer, 0) & int.MaxValue;
idx %= charPool.Length;
password.Append(charPool[idx]);
}
}
return password.ToString();
}
}
코드 설명
- RNGCryptoServiceProvider를 사용해 보안적으로 안전한 랜덤값을 생성합니다.
- 옵션에 따라 문자 집합을 구성하고, 그 중에서 무작위로 문자를 뽑아 비밀번호를 만듭니다.
- 최소 한 가지 옵션은 무조건 선택해야 하도록 예외 처리도 포함했습니다.
확장 아이디어
- 각 옵션(대문자, 소문자, 숫자, 특수문자)이 반드시 한 글자 이상 포함되도록 보장하는 기능 추가
- 여러 개의 비밀번호를 한 번에 생성하는 기능
- GUI(윈도우 폼, WPF)로 확장
마무리
이렇게 C#을 활용해 실생활에 꼭 필요한 비밀번호 생성기를 만들어보았습니다.
간단한 콘솔 프로그램이지만, 보안적으로 안전한 랜덤값을 사용해 강력한 비밀번호를 손쉽게 만들 수 있다는 점이 큰 장점입니다.
여러분도 직접 코드를 실행해 보며 옵션을 바꿔보고, 자신만의 기능을 추가해보세요.
프로그래밍 실력도 키우고, 실생활에도 바로 활용할 수 있는 유용한 프로젝트가 될 것입니다.
궁금한 점이나 더 알고 싶은 내용, 혹은 추가로 다뤄줬으면 하는 기능이 있다면
언제든 댓글이나 문의로 남겨주세요!
함께 성장하는 개발자가 되길 응원합니다 ~~~ㅎㅎㅎ
728x90
반응형
'C#' 카테고리의 다른 글
C# API 완전 정복: 개념부터 실전 예제, REST 원칙, 보안, Swagger 문서화까지 (1) | 2025.05.14 |
---|---|
C# MSSQL 데이터 연동 완전정복: 동기/비동기, CRUD, 그리고 실무 패턴 (1) | 2025.05.13 |
C# 닷넷, 어렵지 않아요! 내 스타일로 쉽게 배우는 사용법 & 활용법 (5) | 2025.05.12 |
C# 필수 기초: 데이터 타입과 변수 선언 완벽 가이드 (0) | 2025.05.09 |
C# LINQ 성능 5배 향상시키는 고급 최적화 기법! (0) | 2025.05.09 |