Использование факториалов для поиска комбинаций - PullRequest
0 голосов
/ 30 октября 2018

Итак, это вопрос из двух частей, но основанный на одном проекте. Я пытаюсь написать небольшую программу, которая может проиллюстрировать, как компьютер может быстро взломать пароль, используя атаку методом грубой силы. Он имеет только три входа: флажок для обозначения, если он должен использовать целые числа, флажок для обозначения, если он должен использовать буквы, и текстовое поле для ввода пароля, который будет взломан. Затем выводится количество комбинаций. Вот мой код:

dim a,b,c,d,P as double
'Using the following formula:
'P(n,r) = n!/(r!(n-r)!)
'Let's assume we are just using numbers, so n = 10
'r = the count of characters in the textbox.

a = factorial(n)
b = factorial(r)
c = (n - r)
d = factorial(c)
P = a / (b * d)
Output = "With a password of " & r & " characters and " & n & " possible values, the number of combinations are " & P 
Me.RichTextBox1.Text = Output & vbCrLf

Function factorial(ByVal n As Integer) As Integer
     If n <= 1 Then
        Return 1
     Else
        Return factorial(n - 1) * n
     End If
End Function

Итак, давайте предположим, что я смотрю только на символы 0-9 со следующим количеством символов в пароле, я получаю:

P(10,1) = 10!/(1! * (10-1)!) = 10
P(10,2) = 10!/(2! * (10-2)!) = 45
P(10,3) = 10!/(3! * (10-3)!) = 120
P(10,4) = 10!/(4! * (10-4)!) = 210
P(10,5) = 10!/(5! * (10-5)!) = 252
P(10,6) = 10!/(6! * (10-6)!) = 210
P(10,7) = 10!/(6! * (10-7)!) = 120

Вы можете видеть, что число комбинаций уменьшается, как только оно проходит 5. Я предполагаю, что это правильно, но хотел проверить, прежде чем представить это. Это потому, что общее число в пуле остается неизменным, а выборка увеличивается?

Мой второй вопрос о том, как считать взломанный пароль, который повторяет цифры. Опять же, давайте предположим, что мы просто вытягиваем из цифр 0-9. Если размер выборки равен двум (скажем, 15), то существует 45 возможных комбинаций, верно? Но что, если они положили в 55? Есть еще 45 комбинаций? Я полагаю, что компьютеру все еще нужно перебирать каждую возможную комбинацию, так что все равно будет рассматриваться 45 возможностей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...