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

1

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

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])
  • 0
    что вы подразумеваете под вычислением ввода ? какой расчет вы хотите?
  • 2
    Если бы можно было восстановить исходный ввод из 3-х символьного хэша, вы бы изобрели лучший в мире алгоритм сжатия.
Показать ещё 1 комментарий
Теги:
hash
cryptography

3 ответа

0

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

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

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

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

0

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

0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню