And*_*ndy 4 algorithm md5 permutation
好吧,我知道这听起来很糟糕,就像我将把它用于非道德的事情一样,但你知道我不是.
我正在为我的计算机和信息安全课程写一篇论文,我选择的主题是散列方法.我在论文中提到的一点是MD5只是单向的,破解MD5哈希的唯一方法是连续创建字符串并使用MD5函数,然后将它与你想要破解的哈希进行比较.
我想构建一个非常简单的模拟程序,与我的论文一起显示(我们做一个演示文稿,这将是一个很棒的事情),所以我想制定一个算法,使每个可能的字符组合字符串最多8个字符.例如,输出将是:
a,b,c,...,aa,ab,ac,... ba,bb,bc等等
如果可能,它需要包括字母,数字和符号.
我部分通过算法得到了这个,但不幸的是我的编程技巧无法完成任务.如果有人能为此提供完整的算法,我将非常感激.
再说一遍,如果你认为我是个骗子而且我打算用这个来进行黑客攻击,你就不必回答.
谢谢.:)
在Python中,itertools.product几乎可以满足您的所有要求 - 尽管它仅针对一个"重复次数"进行,因此您必须从1到8迭代(不是很难;-).在本质上:
import itertools
import string
# whatever you wish as alphabet (lower/upper, digits, punct, &c)
myalphabet = string.ascii_lowercase + string.ascii_digits
def prods(maxlen, alphabet=myalphabet):
for i in range(1, maxlen+1):
for s in itertools.product(alphabet, repeat=i):
yield ''.join(s)
Run Code Online (Sandbox Code Playgroud)
当然,对于长度为N和K重复的字母表(在您的情况下为8),这确实产生N + N ^ 2 + ... + N ^ K的可能性(对于N = 36和K = 8,可能有2,901,713,047,668种可能性),但是,朋友之间几万亿的产出是什么! - )