У кого-нибудь есть примеры алгоритма MD5 для микроконтроллера (желательно 8-битного)? В нашем проекте будет использоваться устройство серии Microchip PIC18.
У кого-нибудь есть примеры алгоритма MD5 для микроконтроллера (желательно 8-битного)? В нашем проекте будет использоваться устройство серии Microchip PIC18.
Ответы:
Вот реализация MD5 от EtherNut (на основе AVR)
Я бы придерживался известной уважаемой реализации MD5 и держался подальше от библиотек, которые вы найдете у сторонних поставщиков. Исходный RFC 1321, в котором описан MD5, имеет пример реализации C.
Напоминание: известными недостатками MD5 являются атаки на столкновения, а не атаки с прообразом , поэтому он подходит для некоторых криптографических приложений, но не для других. Если вы не знаете разницу, вам не следует ее использовать, но не отказывайтесь от нее вообще. См. Http://www.vpnc.org/hash.html .
Вы можете найти хорошее описание и некоторый псевдокод для алгоритма MD5 в Википедии на http://en.wikipedia.org/wiki/MD5
Вы также можете подумать о публикации этого вопроса в stackoverflow, поскольку он больше ориентирован на вопросы программирования.
со страницы википедии на MD5 :
... было показано, что MD5 не защищен от столкновений как таковой, MD5 не подходит для приложений, таких как SSL-сертификаты или цифровые подписи, которые полагаются на это свойство.
и от исследователей SSL на той же странице:
Мы также надеемся, что использование MD5 в других приложениях также будет пересмотрено.
Я понимаю, что вы, вероятно, не хотите это слышать, но вам действительно нужен MD5? Он не должен использоваться в криптографических целях, так как он слишком небезопасен (и есть множество лодок с радужными таблицами). Если вы ищете что-то для проверки данных, посмотрите CRC (код здесь ), который в вычислительном отношении дешевле. Если будете использовать его для криптографических целей , хотя, то , возможно , я предлагаю двигаться к SHA ? Единственная проблема заключается в том, что большинство криптографически безопасных алгоритмов не особенно хорошо работают на микроконтроллерах. Я знаю, что может показаться, что MD5 "достаточно хорош", но инженерный путь заключается в том, чтобы ошибиться в сторону осторожности.