Python随机字符串Sha256 Hasher [关闭]

问题描述 投票:0回答:1

我想创建一个python程序,它首先接受一个名为inputhash的输入(sha256hash)。然后取数字0到9和字母a到z(总共36个选项)并将它们重新排列在32个点中并将其保存到str变量中,让我们说它的randomstring。然后从0到99选择一个随机数(比如说它的名为correctnumber),并将该数字放在randomstring的末尾。最后它散列(sha256)randomstring,如果它与inputhash不匹配,它会重复该过程,直到它完成。最后它会打印变量correctnumber。你是如何创造这个的?

这是你sha256哈希的方式

import hashlib
var = 'password'
hashedWord = hashlib.sha256(var.encode('ascii')).hexdigest()

但我知道其他功能的想法。谢谢

这不是必须在PYTHON。如果另一种语言更容易/更好地使用该语言。

python random sha256
1个回答
1
投票

如果我正确理解了您的问题,您想要使用32个较低的字母数字字符加上一个或两个数字来强制使用SHA256哈希值。如果是这样,这段代码不太可能解决你的问题,(这几乎是不可能的,而python是这个任务的一个非常糟糕的选择),但它可能会给你一些想法。

您可以使用itertools.product()创建所有可能的字符组合,并使用生成器生成它们,因此它不会对内存产生很大的影响。

def string_generator(size=32):
    chars = string.ascii_lowercase + string.digits
    for i in itertools.product(chars, repeat=size):
        yield i

现在我们可以迭代该生成器中的项目,并为每个项目添加range(100)中的数字以创建可能的匹配。如果可能匹配的哈希值等于输入哈希值,请恭喜您找到了正确的数字!

完整的代码:

import string
import itertools
import hashlib

def string_generator(size=32):
    chars = string.ascii_lowercase + string.digits
    for i in itertools.product(chars, repeat=size):
        yield ''.join(i)

def bruteforce(hash):
    possible_strings = string_generator()
    for i in possible_strings:
        for n in range(100):
            s = i + str(n)
            print('\r' + s, end=' ')
            if hashlib.sha256(s.encode('ascii')).hexdigest() == hash:
                print('\rHash found: ' + s)
                return n 
    print('\nNot found.') 

s = bruteforce('my hash')
© www.soinside.com 2019 - 2024. All rights reserved.