본문 바로가기

디지털포렌식(Digital forensic)/숫자

[파일] 추천 비밀번호 1000만 개

반응형

비밀번호를 만들 때 머리가 아프신 분들을 위해
1000만 개의 6자리 랜덤비밀번호를 첨부 파일로 올린다.
파일은 txt 텍스트 파일이며, 380MB의 사이즈를 갖고 있다.
파일당 용량이 정해져서 쪼개서 올린다.
(동영상은 PC로 보면 더 잘보인다.)

10,000,000

 

 
▼ 1000만개를 압축파일형태로 올린 것

6digits_password.vol1
10.00MB
6digits_password.vol2
10.00MB
6digits_password.vol3
10.00MB
6digits_password.vol4
10.00MB
6digits_password.vol5
2.82MB

 
잘 사용하는 방법

1. 검색 기능으로 자신이 좋아하는 숫자 조합을 찾는다(예: 74)
2. 찾아진 숫자조합들 중에서 마음에 들며 의미있는 숫자 조합을 다시 찾는다.
3. 찾은 숫자조합을 사용한다. 즐겁게.
 
국가와 민족을 위해 디지털암호학에 관심갖는 젊음이 많아지길 바라며.
 

using System;
using System.IO;

class Program
{
    static Random random = new Random();

    static int GenerateRandomDigit()
    {
        return random.Next(10); // 0부터 9까지의 난수 생성
    }

    static string GeneratePassword()
    {
        while (true)
        {
            int[] passwordDigits = new int[6];

            // 앞의 3자리와 뒤의 3자리가 같으면 안됨
            do
            {
                for (int i = 0; i < 6; i++)
                {
                    passwordDigits[i] = GenerateRandomDigit();
                }
            } while (passwordDigits[0] == passwordDigits[3] && passwordDigits[1] == passwordDigits[4] && passwordDigits[2] == passwordDigits[5]);

            // 2자리 + 2자리 + 2자리의 숫자가 반복되면 안됨
            bool isRepeatedPattern = true;
            for (int i = 0; i < 4; i += 2)
            {
                if (passwordDigits[i] != passwordDigits[i + 1] || passwordDigits[i + 2] != passwordDigits[i + 3])
                {
                    isRepeatedPattern = false;
                    break;
                }
            }
            if (isRepeatedPattern)
                continue;

            // 0, 1, 2, 3, 4, 5와 같이 연속되면 안됨
            bool isConsecutive = true;
            for (int i = 0; i < 5; i++)
            {
                if (passwordDigits[i] != passwordDigits[i + 1] - 1)
                {
                    isConsecutive = false;
                    break;
                }
            }
            if (isConsecutive)
                continue;

            // 조건을 모두 만족하는 비밀번호 생성
            return string.Join("", passwordDigits);
        }
    }

    static void Main()
    {
        int numberOfPasswords = 10000000;
        string fileName = "6digits_password.txt";

        using (StreamWriter writer = new StreamWriter(fileName))
        {
            for (int i = 0; i < numberOfPasswords; i++)
            {
                string password = GeneratePassword();
                writer.WriteLine($"생성된 비밀번호 {i + 1}: {password}");
            }
        }

        Console.WriteLine($"파일 '{fileName}'에 비밀번호를 저장했습니다.");
    }
}

 

 
 

728x90