Расчет размера стога сена - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу создать плохую версию программы проверки сложности пароля. Я определяю приблизительный набор символов, который использует пароль, и его длину. Тогда пространство поиска будет: charset ^ length. Чтобы сравнить это с одним значением, я хочу наименьший x, который при использовании в качестве показателя степени 2 больше, чем пространство поиска. На более математическом языке я хочу это:

с учетом a и b найдите наименьший x, где a ^ b <2 ^ x; </p>

Моя математика - отстой. Есть ли быстрый и простой способ рассчитать это?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете решить уравнение, используя логарифмы. Взятие логарифмов с обеих сторон дает

x > b * log(a) / log(2)

Если вы хотите найти наименьшее целое число, такое, что уравнение выполнено, мы можем округлить в правую сторону. В Python это может быть реализовано как

import math

def find_x(a, b):
    return math.ceil(b * math.log(a) / math.log(2))
0 голосов
/ 05 сентября 2018

Может быть, моя математика не слишком много сосет.

  2^x == a^b
= define a = 2^c, c = 2loga
  2^x == 2^c^b
=
  2^x == 2^c*b
=
  x == c*b
=  
  x == 2loga * b
...