반응형
많은 분들의 요청으로 6자리 비밀번호 1,000만개를 파일로 올렸다.
파일만 다운받고 싶다면 ▼ 여기로 가면 된다.
https://delock.tistory.com/38
6자리 비밀번호는 6자리로 구성된 보안 비밀번호를 가리킨다.
6자리 비번은 온라인 서비스나 계정에서 다른 암호나 비번과 같이 사용된다.
4자리의 비번 생성은 사용자가 비교적 쉽게 기억할 수 있지만
6자리 비번은 생각만큼 쉽지 않다.
6자리 비번을 만드는 코드는 아래의 조건들을 포함했다.
1) 앞서 포스팅처럼 반복되는 숫자가 있어서는 안되는 조건은 같다.
2) 앞의 3자리와 뒤의 3자리가 같아서는 안된다는 조건
3) 2자리, 2자리, 2자리의 숫자가 같아서는 안된다는 조건
4) 숫자가 나열되면 안된다는 조건
using System;
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];
// 1. 앞의 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자리 + 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;
// 3. 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()
{
string password = GeneratePassword();
Console.WriteLine("생성된 비밀번호: " + password);
}
}
결과
위 코드의 main( )에서 비밀번호 30개 생성하는 코드를 추가하도록 반복하는 코드로 변경하면
static void Main()
{
int numberOfPasswords = 30;
for (int i = 0; i < numberOfPasswords; i++)
{
string password = GeneratePassword();
Console.WriteLine($"생성된 비밀번호 {i + 1}: {password}");
}
}
결과
이 코드에 몇 개의 제약 조건들을 더 추가하면?
728x90
'디지털포렌식(Digital forensic) > 숫자' 카테고리의 다른 글
데이터 분석으로 알아보는 2023년 로또 번호 빈도 분석 (1) | 2023.09.14 |
---|---|
[파일]신용 카드 유효성 검사, Luhn 코드 (0) | 2023.09.07 |
[파일]통장 비밀 번호 (0) | 2023.09.04 |
황금 비율(golden rate), 1.6180339887 (0) | 2023.08.29 |
파워-볼 숫자 암호, 1등은 3천만 원 (0) | 2023.08.29 |