Math 计算字符串的干草堆大小

Math 计算字符串的干草堆大小,math,passwords,complexity-theory,Math,Passwords,Complexity Theory,我想创建一个穷人版的密码复杂性检查器。我确定密码使用的粗略字符集及其长度。搜索空间将是:charset^length。为了将其与单个值进行比较,我需要最小的x,当用作2的指数时,它大于搜索空间。用更多的数学语言,我想要这个: 给定a和b,求最小的x,其中a^b

我想创建一个穷人版的密码复杂性检查器。我确定密码使用的粗略字符集及其长度。搜索空间将是:charset^length。为了将其与单个值进行比较,我需要最小的x,当用作2的指数时,它大于搜索空间。用更多的数学语言,我想要这个:

给定a和b,求最小的x,其中a^b<2^x


我的数学糟透了。有没有一个简单快捷的方法来计算这个呢?

也许我的数学算不上那么糟糕

  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

你可以用对数来解这个方程。将两边的对数都取下来就得到了

x > b * log(a) / log(2)
如果你想找到等式成立的最小整数,我们可以对右边进行四舍五入。在python中,这可以实现为

导入数学
def find_x(a,b):
返回math.ceil(b*math.log(a)/math.log(2))