Можно ли рассчитать входные данные этой хеш-функции на основе выходных данных?

У меня есть следующая хеш-функция, и мне интересно, есть ли способ рассчитать входные данные этой функции на основе хешированного значения. заранее спасибо

def hash(message):
    key = [0x0f, 0xff, 0x00]
    for char in message:
        n = ord(char)
        key[0] ^= n
        key[1] &= n
        key[2] |= n
    return ’’ + chr(key[0]) + chr(key[1]) + chr(key[2])

3 ответа

С точки зрения второго предварительного изображения хэш-функции; Существует бесконечно много решений для любой хэш-функции, если у вас достаточно времени и денег.

Теперь предположим, что у вас есть время и деньги, и вы сгенерировали все возможные вторые предварительные изображения с заданным значением хэша вплоть до n-бит, и скажем, что у нас есть x решений.

for i in space(1..2^n)
   check hash(i) == TheHash

Даже при x=2 злоумышленник не сможет определить реальное предварительное изображение, которое было выведено в хэш. Имейте в виду, однако, что с точки зрения атакующего злоумышленник уже находит x решений, чтобы сломать ваш хэш.

Одним словом, нет. Никакая значимая хеш-функция не может быть применена в обратном порядке.

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

Для этого выходной домен должен быть значительно меньше, чем входной домен, или, другими словами, несколько входов могут соответствовать одному выходу. В вашем случае струны "000" а также "000000000" будет иметь такое же значение хеш-функции, и у вас не будет возможности отличить одно от другого, учитывая только хеш-код.

Это возможно, но невозможно сгенерировать сообщение из его хеш-значения, кроме как путем попытки всех возможных сообщений.

Другие вопросы по тегам