有没有人知道是否有可能在紧缩中生成一系列单词,其中包含10个带字母(大写)和数字的字符,但强制至少有三个数字?
例如,我可以轻松生成密码(极大的列表), 但我不需要AAAAAAAAAA或BBBBBBBBBB。 AAA1AAAAAA或EEEEEE2EEE等其他产品不适用于我的情况。
像AAA333AAAA或BBBBB245DD这样的字是我需要的。
我尝试过命令crunch:
crunch 10 10 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
但这会给我一个巨大的名单。
有谁知道怎么做?
由于
答案 0 :(得分:2)
我认为不可以。 编写一个能够做到的程序并不困难。 问题是,你觉得值得吗?
现在,你正试图生成
36^10
数字。
在我的i5
,crunch
上,使用上述命令以约crunch 10 10 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" | pv >/dev/null
〜20MBps
的速率提供(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个核心可能会加速两次。 简而言之,如果您使用普通的笔记本电脑,那么您将看到数百年的计算。
我们使用密码和字符串令牌来保护对银行帐户的访问是有原因的。 :)