紧缩生成特定字典

时间:2015-07-14 17:02:08

标签: linux bash

有没有人知道是否有可能在紧缩中生成一系列单词,其中包含10个带字母(大写)和数字的字符,但强制至少有三个数字?

例如,我可以轻松生成密码(极大的列表), 但我不需要AAAAAAAAAA或BBBBBBBBBB。 AAA1AAAAAA或EEEEEE2EEE等其他产品不适用于我的情况。

像AAA333AAAA或BBBBB245DD这样的字是我需要的。

我尝试过命令crunch:

crunch 10 10 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

但这会给我一个巨大的名单。

有谁知道怎么做?

由于

1 个答案:

答案 0 :(得分:2)

我认为不可以。 编写一个能够做到的程序并不困难。 问题是,你觉得值得吗?

现在,你正试图生成 36^10数字。

在我的i5crunch上,使用上述命令以约crunch 10 10 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" | pv >/dev/null20MBps的速率提供(1906501 lines per second (20×2^20/11))输出,利用2我的4个虚拟核心。 按照目前的速度,它将计算所有内容 36^10÷(20×2^10÷11) seconds == 62,270年`

如果您要修改算法以便生成至少包含3位数的子集,那么您可以减少时间 36^10÷(36^7×10^3) = 46 times(但增加的逻辑会减慢它的速度,所以速度可能会稍微降低一点,尽管可能crunch效率不高。)

使用我的所有4个核心可能会加速两次。 简而言之,如果您使用普通的笔记本电脑,那么您将看到数百年的计算。

我们使用密码和字符串令牌来保护对银行帐户的访问是有原因的。 :)