Python 没有类似字符的密码迭代?

Python 没有类似字符的密码迭代?,python,Python,我正在读这篇文章,它启发我研究如何优化简单生成密码的暴力强制 我的遭遇: 我正在尝试从key=''.join(random.sample(string.uppercase,7))迭代所有可用的密码组合。如果我读对了文档:key在这种情况下,不能由两个相似或相等的字母组成。它始终是(在本例中)唯一的7长大写字符串 示例:str(键)无法生成:AARGHJU 问题: 如何更改while语句,使其不会迭代包含类似字母的字符串 chars = 'ABCDEFGHIJKLMNOPQRSTUVXYZ'

我正在读这篇文章,它启发我研究如何优化简单生成密码的暴力强制

我的遭遇: 我正在尝试从
key=''.join(random.sample(string.uppercase,7))
迭代所有可用的密码组合。如果我读对了文档:
key
在这种情况下,不能由两个相似或相等的字母组成。它始终是(在本例中)唯一的7长大写字符串

  • 示例:
    str(键)
    无法生成:
    AARGHJU
问题: 如何更改while语句,使其不会迭代包含类似字母的字符串

chars = 'ABCDEFGHIJKLMNOPQRSTUVXYZ' # chars to look for
try:
    while 1:
        # Iteration processess of possibel keys
        for length in range(7,8): # only do length of 7
            to_attempt = product(chars, repeat=length)
            for attempt in to_attempt:
                print(''.join(attempt))

except KeyboardInterrupt:
    print "Keybord interrupt, exiting gracefully anyway."
    sys.exit()
发电ex将产生不必要的时间和功率:

AAAFXEL
AAAFXEM
AAAFXEN
AAAFXEO
AAAFXEP
AAAFXEQ
AAAFXER
AAAFXES

对于整个空间的非重复枚举,可能需要itertools.permutations

```python
from itertools import permutations
chars = 'ABCDEFGHIJKLMNOPQRSTUVXYZ' # chars to look for
try:
    while 1:
        # Iterate through possible keys
        for length in range(7,8):
            to_attempt = permutations(chars, length)
            for attempt in to_attempt:
                print(''.join(attempt))

except KeyboardInterrupt:
    print "Keyboard interrupt, exiting gracefully anyway."
    sys.exit()
```

我不明白你从哪里得到这个要求的。当然,强制使用唯一字母会降低密码的强度,因为它会减少每个连续字母的潜在值范围?是的,没错。也许我更新后的问题会对我的长度范围(7,8)的问题
有所帮助
这只输出7。那你为什么要用它呢?@Lafexlos你能详细说明一下你要找的是什么吗?但是对于这么多的物品,你很可能会得到memoryError。谢谢你的回答!有可能从一个特定的点开始排列吗?假设我运行了10分钟的代码,结果是在
ATJOIRE
。然后是否可以从该点“恢复”。您可以使用
itertools.dropwhile
。或者,您可以构建自己的实现。