我正在开发一个分布式应用程序,以使用暴力和其他技术来发现密码。
对于暴力破解部分,我需要一个 Rust 密码生成器库或命令行工具。它需要使用特定的字符集、特定的密码长度和范围来生成所有可能性。
能够选择获取特定范围非常重要,因为我打算将这些“密码批次”分发给并行运行的不同工作人员。
例如,生成从第 1001 个到第 2000 个密码的4 位字母数字密码。
我正在开发一个分布式应用程序,以使用暴力和其他技术来发现密码。
对于暴力破解部分,我需要一个 Rust 密码生成器库或命令行工具。它需要使用特定的字符集、特定的密码长度和范围来生成所有可能性。
能够选择获取特定范围非常重要,因为我打算将这些“密码批次”分发给并行运行的不同工作人员。
例如,生成从第 1001 个到第 2000 个密码的4 位字母数字密码。
据我所知,没有任何库,可能是因为自己做并不太复杂:
操场
解释算法
每个字符都是一个数量级。在以 10 为基数、密码长度为 4 的情况下,您将拥有1000位,然后是100位,然后是10 位,最后是1位。
(0..width).rev()
迭代3, 2, 1, 0
. 我们可以注意到1000
是 10^3 、100
是 10^2 、10
是 10^1 、1
是 10^0 ;每个数字对应数字位的十的幂。所以位置数量级的公式
i
是10.pow(i)
。如果我们将数字除以n
,10.pow(2)
我们会得到一个数字,表示该数字中有多少个完整的100(整数除法将截断任何10或1)。对于数字1234 / 10.pow(2)
结果12
. 但我们只想要那个2
,所以我们取 10: 的余数12 % 10
。所以对于基数十,我们的代码是
10
然后,我们通过替换来将其推断为更大的符号集char_set.len()
,从而得到上述算法。