nazartertyshny
@nazartertyshny
Govnocoder

Как можно оптимизировать скрипт перебора hash с солью?

Доброго времени суток.

Имеется hash строка, которая создаётся на PHP при помощи следующей конструкции:
<?php
    $hashed = hash('sha512', env('SALT') . $string);

Данная hash строка заносится в базу данных и при последующих проверках отлично работает (обычное сравнение хэша).

Но возникла небольшая заминка и потребовалось узнать, какая именно строка хранится в таком захэшированном виде.
Для данной задачи был написан (успешно стянут и модифицирован из сети) небольшой скриптик, который вполне выполняет задачу.
Но проблема в том, что выбранный подход слишком груб (от названия и выходит - грубая сила, перебор) и медленный. Поэтому и возник вопрос: как можно "оптимизировать" следующий код?

import hashlib
import itertools
import string

def guess_string(hashed_string, salt):
    chars = string.ascii_lowercase + string.digits
    attempts = 0

    for length in range(1, 100):
        for guess in itertools.product(chars, repeat = length):
            guess = ''.join(guess)

            hash_attempt = hashlib.sha512(salt + guess).hexdigest()

            if hashed_string == hash_attempt:
                return 'String: {}. Hash: {}' . format(guess, hash_attempt)

salt = 'КАКАЯ_ТО_КРУТАЯ_СОЛЬ'
hashed_string = 'КАКОЙ_ТО_КРУТОЙ_ХЭШ_СОСТОЯЩИЙ_ИЗ_120_СИМВОЛОВ'

print(guess_string(hashed_string, salt))


Буду очень признателен за помощь/советы.

Всем бобра и ключ на 13
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
DevMan
@DevMan Куратор тега Python
у вас соль постоянная (что кагбе не айс), можете поиграться радужными таблицами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы