Частичное столкновение для уменьшенного хэша SHA1

Я делаю проект, чтобы найти два разных предложения, которые дают частичное столкновение на основе уменьшенного хэширования sha1. Моя программа сгенерирует два разных сообщения. Если первые 32 бита хэширования двух предложений совпадают, программа остановится, иначе будет повторяться до обнаружения коллизии.

Моя программа работает хорошо, однако время, необходимое для поиска столкновений, заключается в замедлении. Как я могу ускорить его. Я прочитал и узнал, что я могу использовать парадокс дня рождения, как мне это реализовать?

Я сделал некоторый поиск и получил связанный ответ, однако я все еще смущен парадоксом дня рождения.

Вероятность столкновения SHA1

Демонстрация столкновения SHA1 / пример

http://www.metzdowd.com/pipermail/cryptography/2004-August/007409.html

http://www.freelists.org/post/hashcash/Hashcash-and-the-cracking-of-SHA1,2

Вот как работает моя программа:

Generate random number() // let say i generate 100 number
Generate random char1() // we will generate 100 char
Hash() // the first 100 char
Generate random char2() // we will generate another 100 char
Hash2() // this 100 char again
Get the 32 bit of the random char1()
Get the 32 bit of the random char2()
compare the 32 bit for partial collision
If they dont match we will keep on doing until partial collision is found.
  • Время, затрачиваемое на поиск, слишком велико по сравнению с другой программой, которая может найти миллисекунду.

-1

Решение

Если вы ищете частичные коллизии в хэш-функции, пытаясь использовать случайную пару входных данных каждый раз, когда вам придется принимать очень длинные среды выполнения. Для 32 битов и идеальной хеш-функции это шанс 1 / (2 ^ 32) столкновения.

Чтобы использовать парадокс дня рождения, вам нужно сохранить сгенерированные вами хеши и сравнить их со всеми. Это работает, потому что вы ищете Столкновение, вас не особо волнует, что породило хэши, которые в итоге столкнулись. Прочтите, как работает парадокс дня рождения, используя людей и дни рождения, и убедитесь, что вы понимаете это, прежде чем применять его к хешированию.
По математике здесь вам нужно всего лишь ~ 77 000 хэшей, чтобы иметь 50% -ную вероятность найти между ними коллизию для 32 битов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]