В чем причина разницы во времени в одних и тех же алгоритмах хеширования?

я прочитал эту статью в Codeproject:

Хеширование паролей с солью.

и я понимаю, что лучший алгоритм хеширования для веб-форм asp.net - PBKDF2-HMAC-SHA512. а затем эта реализация на github:

Мои реализации PBKDF2 в PHP, C #, Java и Ruby.

он основан на PBKDF2-HMAC-SHA1.

Я погуглил, чтобы найти что-то, что помогло бы мне сделать хеш на основе PBKDF2-HMAC-SHA512.

и я нашел эту библиотеку на github:

therealmagicmike / PBKDF2.NET.

в этой библиотеке я могу определить свой алгоритм хеширования, например HMACSHA1, HMACSHA256, HMACSHA384 или HMACSHA512.

и, как вы знаете, HMACSHA1 быстрее, чем HMACSHA512. и это плохо по соображениям безопасности.

Но я нашел то, чего не знаю, правда это или нет! Я реализовал оба алгоритма на одной странице и понимаю, что алгоритм Adriancs занимает больше времени, чем алгоритм микрофона. и это не логично, как для статьи Адрианкса.

Итак, я хочу знать, какой алгоритм самый медленный, а какой лучше?

любая помощь будет оценена по достоинству.

Большое спасибо.


person Community    schedule 18.11.2016    source источник
comment
Фактор работы (итераций) такой же? Сравниваете время на одном языке? У разных языков разная эффективность.   -  person zaph    schedule 19.11.2016
comment
да. обе итерации одинаковы. Я протестировал обе библиотеки с одинаковыми значениями: размер соли 64. хеш-байты 22. итерации 64000.   -  person    schedule 20.11.2016
comment
Разные языки, какие у них время тестирования?   -  person zaph    schedule 20.11.2016
comment
Нет, оба написаны на C #. И что-то еще, самый быстрый - с помощью метода BufferCopy. Может быть, причина в разнице во времени ?!   -  person    schedule 21.11.2016
comment
В любом случае у концерта есть значение раундов, которое занимает около 100 мс.   -  person zaph    schedule 21.11.2016
comment
да. У меня нет проблем с долгим хешированием. Я просто хочу знать, логично ли, что Sha512 будет быстрее Sha1 ?! Что-то случилось со мной.   -  person    schedule 21.11.2016
comment
Да на 64-битных процессорах. В зависимости от оборудования могут быть значительные различия.   -  person zaph    schedule 21.11.2016
comment
Большое спасибо, Заф, за твою огромную помощь.   -  person    schedule 21.11.2016


Ответы (1)


Извини, что обнаружил это так поздно. Я автор PBKDF2.NET. Разница в скорости происходит из-за сравнения на равенство. Библиотека Defuse реализует функцию медленного сравнения, в которой я решил оставить любые настраиваемые сравнения на усмотрение потребителя. Я считаю, что я не хотел создавать библиотеку с дополнительными несущественными служебными функциями, а хотел обеспечить правильную реализацию алгоритма. Требует ли конкретное приложение медленного сравнения или нет, действительно зависит от приложения, поэтому я исключил это.

person Mike Johnson    schedule 29.04.2019