Python随机字符串Sha256哈希器

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

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

这就是你要做的

import hashlib
var = 'password'
hashedWord = hashlib.sha256(var.encode('ascii')).hexdigest()
但我知道其他功能的想法。谢谢


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

如果我正确理解了您的问题,您希望使用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
现在,我们可以迭代该生成器中的项目,并为每个项目在
范围(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')

如果我正确理解了您的问题,您希望使用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
现在,我们可以迭代该生成器中的项目,并为每个项目在
范围(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')

这个问题似乎没有问题。另外,请张贴您的代码。我们不会为你写整个程序。你想写一个暴力部队吗?我不认为随机性是最好的选择,它可能需要永远。为什么不在生成器中使用
itertools.permutations
inputhash
数字0-99的哈希值是否正确?例如,
inputhash
hashlib.sha256('10'.encode()).hexdigest()
。如果你想猜测这个值,你所要做的就是在
范围(100)
上循环,散列并比较摘要。好的,这很有意义。那么,你知道随机字符串的大小是固定的还是随机的吗?它可能包含重复字符吗?如果需要,则必须使用
itertools.product
。是字母数字的吗?如果是,并且具有随机大小,您如何确定正确的数字?例如,如果随机字符串是'abc1',数字是'2'(因此,
inputhash
是'abc12'的散列值),您如何知道正确的数字是'2'还是'12'?这个问题中似乎没有问题。另外,请张贴您的代码。我们不会为你写整个程序。你想写一个暴力部队吗?我不认为随机性是最好的选择,它可能需要永远。为什么不在生成器中使用
itertools.permutations
inputhash
数字0-99的哈希值是否正确?例如,
inputhash
hashlib.sha256('10'.encode()).hexdigest()
。如果你想猜测这个值,你所要做的就是在
范围(100)
上循环,散列并比较摘要。好的,这很有意义。那么,你知道随机字符串的大小是固定的还是随机的吗?它可能包含重复字符吗?如果需要,则必须使用
itertools.product
。是字母数字的吗?如果是,并且具有随机大小,您如何确定正确的数字?例如,如果随机字符串是“abc1”,数字是“2”(因此
inputhash
是“abc12”的散列值),您如何知道正确的数字是“2”还是“12”?