python - Python蛮力密码猜测器
问题描述
我在课堂上做一个关于密码猜测器的任务。我在尝试解决这个任务时偶然发现了很多问题,我的第一种方法是使用 for 循环(下面的代码),但我意识到“for 循环”的数量等于字符串的长度。
a_z = 'abcdefghijklmnopqrstuvwxyz'
pasw = 'dog'
tests = 0
guess = ''
azlen = len(a_z)
for i in range(azlen):
for j in range(azlen):
for k in range(azlen):
guess = a_z[i] + a_z[j] + a_z[k]
tests += 1
if guess == pasw:
print('Got "{}" after {} tests'.format(guess, str(tests)))
break
input()
上面的程序非常具体。它仅在输入正好 3 个字符时才有效。我读到您可以使用一个名为 intertools 的包,但是,我真的很想找到另一种方法。我想过使用递归,但甚至不知道从哪里开始。
解决方案
import string
import itertools
for possible_password in itertools.permutations(string.ascii_letters, 3):
print(possible_password)
推荐阅读
- javascript - 根据某些字母显示字符串
- bash - 如何搜索文件结束的星星?
- python - 在不使用 pythonw.exe 的情况下执行没有控制台窗口的脚本
- matlab - 在模函数上使用 fimplicit 的虚假行
- sqlite - Createblobstream 使用 FDTable / Sqlite 读取和写入记录类型到 Blobfield
- powershell - dnsserverresourcerecord - 所有扩展属性和区域
- ruby-on-rails - 从 Rspec 中的全局队列访问数据
- wordpress - 付款失败后取消自定义状态更改状态的 WooCommerce 订单
- java - Firefox 浏览器/服务器协商的选定密码与 Tomcat 配置的密码列表不匹配
- bash - 如何将循环变量作为输入传递给剪切?