본문 바로가기

디지털포렌식(Digital forensic)/암호스토리

로그인 암호, 영문과 숫자, 특수 문자를 조합한 8자 이상

반응형

로그인 암호는 온라인의 보안을 유지하기 위해 필요하다.

계정 보호, 개인 정보 보호, 불법 접근 방지, 식별과 인증

로그인 암호는 사용자의 계정을 외부 침입자로부터 보호하고
바른 암호 없이는 다른 사람이 사용자의 계정에 접근하는 것을 방지한다.
이를 통해 사용자의 개인 정보와 데이터를 안전하게 보호하며 개인 정보 유출이나 해킹을 막을 수 있다.
타인의 불법적 접근을 방지하고, 온라인 서비스 또는 웹사이트의 시스템이 무단으로 사용되지 않도록 한다.
뿐만 아니라 사용자를 식별하고 인증해서 정당한 사용자만이 특정 서비스나 애플리케이션에
접근하게 할 수 있다.

아래 코드는 C#으로 작성되었이며 몇 가지 조건을 제한한 암호 생성 코드다.

조건1) 암호 10개를 생성한다.
조건2) 적어도 영문대문자 1개가 포함된다.
조건3) 적어도 영문소문자 1개가 포함된다.
조건4) 적어도 특수문자 1개가 포함된다.
조건5) 암호의 길이는 8자리로 정한다.

using System;
using System.Text;
using System.Security.Cryptography;
using System.Linq;

class Program
{
    static void Main()
    {
        int passwordCount = 10;

        for (int i = 0; i < passwordCount; i++)
        {
            string password = GeneratePassword();
            Console.WriteLine($"Password {i + 1}: {password}");
        }
    }

    static string GeneratePassword()
    {
        string uppercaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        string lowercaseChars = "abcdefghijklmnopqrstuvwxyz";
        string numericChars = "0123456789";
        string specialChars = "!@#$%^&*()-_=+[]{}|;:'\",.<>?";

        string allChars = uppercaseChars + lowercaseChars + numericChars + specialChars;

        Random random = new Random();
        StringBuilder password = new StringBuilder();

        // 첫 번째 문자로 영어 대문자 선택
        password.Append(uppercaseChars[random.Next(0, uppercaseChars.Length)]);

        // 나머지 7자는 모든 문자 중에서 무작위로 선택
        for (int i = 1; i < 8; i++)
        {
            password.Append(allChars[random.Next(0, allChars.Length)]);
        }

        // 생성된 비밀번호 문자열을 무작위로 섞음
        string shuffledPassword = new string(password.ToString().ToCharArray().OrderBy(s => Guid.NewGuid()).ToArray());

        return shuffledPassword;
    }
}

결과


 

만약, 10자리가 아닌 16자리의 암호를 생성코자 한다면
int passwordCount = 10;를 int passwordCount = 16;으로만 바꾼다.

 





728x90