字典我也写过一个自己用,觉得这种算法就已经足够通用任何情况了,软件恕我不能公开了(需要的我也可以有偿提供
zvrop@163.com),算法大概我说一下.
总体上我用一个列表框存放N个"元素",这些元素可以任意添加,任意排序,不仅限于单个字符.比如"a","D","4","zvrop","3355226","
abc@as.com"....
然后用几个选项选择对元素进行限制,最后排序出所有的可能性.
1.用几个选择框选择是否固定几个位置的元素,比如开头都是"13"这个元素,这就可以组成手机字典.
2.选择最大组成单个密码的元素个数(同类最小的也有).
3.最长单个密码的字符个数.(同类最小的也有)
4.是否填充特定字符,使得每个密码的长度都一样.比如"123",和"000123"
5.是否允许单个密码中同一个元素出现一次以上.比如"123"和"122".(这里还有只让某个元素出现一次以上的应用实例,后来我发现只要选中这个选择,然后把这个元素添加N次既可,同样的方法可以设置某个元素出现的几率).
6.优化算法.这个比较特殊,也是最大的特点,目前我尚不知道有用没用,算法我是在彩票软件内偷来的,大概意思就是说你用了16个元素,按照正常的算法,将产生16的16次方个密码,相当庞大,在某种选10保9确认8的算法下,生成的密码只有几百个(根据你选择的参数而定,选择的极端,也可能达到几百亿个).对于拥有破解时间较少的人可能有用.
7.额外生成所有密码的MD5码.
8.其他一些功能.