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
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
DevMan
@DevMan Куратор тега Python
у вас соль постоянная (что кагбе не айс), можете поиграться радужными таблицами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Level Travel Москва
До 160 000 ₽
Big Data Solutions Санкт-Петербург
от 100 000 до 220 000 ₽
18 февр. 2020, в 23:53
8000 руб./за проект
18 февр. 2020, в 22:14
10000 руб./за проект