我想创建一个密码复杂度检查器的穷人版本。我确定密码使用的粗略字符集及其长度。搜索空间将是:charset ^ length。为了将此值与单个值进行比较,我希望将最小的x用作2的指数大于搜索空间。我想用更数学的语言:
给定a和b,找出最小的x,其中a ^ b <2 ^ x;
我的数学糟透了。有没有一种快速简便的方法来计算这个?
答案 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))