首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.7中的沙-1和MD5 BruteForce

Python3.7中的沙-1和MD5 BruteForce
EN

Code Review用户
提问于 2018-11-20 08:02:25
回答 1查看 1.5K关注 0票数 2

我已经制作了一个python程序,它可以同时强制MD5和SHA1散列,我想知道我是否能让程序更快,或者我可以用什么方法来改进它。我仍然是python和一般编码方面的初学者(这个程序只是为了学习目的)。

守则:

代码语言:javascript
复制
import time
import string
import hashlib
ready = False
start = time.time()
chars = list(string.printable)[:95]
base = len(chars)
n = 0
hashmethod = 0
password = ""
solved = False
quit = ""
while ready != True:
    password = input("Enter a valid MD5 or SHA-1 hash:")

if len(password) == 32:
    ready = True
elif len(password) == 40:
    ready = True
    hashmethod = 2
else:
    continue


def numberToBase(n, b):  # converts number N base 10 to a list of digits base b
    digits = []
    while n:
        digits.append(int(n % b))
        n //= b
    return digits[::-1]


# check edge cases like empty, or 0
if password == '':
    print('Your password is empty')
    solved = True

# begin systematically checking passwords
while not solved:
    lst = numberToBase(n, base)
    word = ''
    for x in lst:
        word += str(chars[x])
    if hashmethod == 2:
        hashedGuess = hashlib.sha1(bytes(word, 'utf-8')).hexdigest()

    else:
        hashedGuess = hashlib.md5(bytes(word, 'utf-8')).hexdigest()
        print(word)
    if password == hashedGuess:
        solved = True
        print('-Stats-')
        print('Pass: ' + word)
        print('Attempts: ' + str(n))
        print('time: ' + str((time.time() - start)) + ' sec')
        while quit != " QUIT":
            quit = input('Type <QUIT> to quit')
    else:
        n += 1
EN

回答 1

Code Review用户

回答已采纳

发布于 2018-11-20 16:50:52

对于杂凑暴力,简单的回答是“不要用Python来做”。在切换到C或C++时,您将获得巨大的性能提升。

因为这是为了学习目的,所以回顾一下Python:

  • 为了清晰起见,在导入和代码之间添加一个换行符。
  • 考虑将全局范围代码放入main()函数中,并将部分代码细分为其他函数。
  • 您的代码实际运行吗?您在ready上有一个循环,但是没有修改它的值,所以我认为它会挂在那里。我怀疑您已经打破了循环的缩进,下面的一些语句属于循环。
  • 与其将ready设置为稍后脱离循环,您可以简单地使用break。你可以摆脱你的else/continue
票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/208047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档