计算字符串的干草堆大小

时间:2018-09-05 13:54:23

标签: math passwords complexity-theory

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

给定a和b,找出最小的x,其中a ^ b <2 ^ x;

我的数学糟透了。有没有一种快速简便的方法来计算这个?

2 个答案:

答案 0 :(得分:0)

也许我的数学没那么吸引人。

  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

答案 1 :(得分:0)

您可以使用对数求解方程。取双方的对数可得出

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

如果您想找到最小的整数,以便该方程式成立,我们可以舍入右手边。在python中,可以实现为

import math

def find_x(a, b):
    return math.ceil(b * math.log(a) / math.log(2))