Реализация MD5 для микроконтроллера

11

У кого-нибудь есть примеры алгоритма MD5 для микроконтроллера (желательно 8-битного)? В нашем проекте будет использоваться устройство серии Microchip PIC18.

Дж. Полфер
источник

Ответы:

11

Если вы ищете реализацию C, в стеке Microchip TCP / IP есть реализация MD5 в файле Hashes.c.

mjh2007
источник
Это именно то, что мне было нужно.
Дж. Полфер
9

Вот реализация MD5 от EtherNut (на основе AVR)

Тоби джеффи
источник
4

Я бы придерживался известной уважаемой реализации MD5 и держался подальше от библиотек, которые вы найдете у сторонних поставщиков. Исходный RFC 1321, в котором описан MD5, имеет пример реализации C.

Напоминание: известными недостатками MD5 являются атаки на столкновения, а не атаки с прообразом , поэтому он подходит для некоторых криптографических приложений, но не для других. Если вы не знаете разницу, вам не следует ее использовать, но не отказывайтесь от нее вообще. См. Http://www.vpnc.org/hash.html .

Джейсон С
источник
1
Для криптографии я бы держался подальше от MD5 ...
Тоби Джаффей
1
@Joby: цените эту мысль, но у MD5 есть аспекты, которые просто хороши для криптографии. Вам просто нужно знать его сильные и слабые стороны.
Джейсон С
+1 за ссылку на исходный код C в оригинальном RFC. Даже если бы я, вероятно, пошел с исходным кодом от Microchip, те же самые люди, которые сделали чип, на котором он будет работать.
Дэвидкари
3

Вы можете найти хорошее описание и некоторый псевдокод для алгоритма MD5 в Википедии на http://en.wikipedia.org/wiki/MD5

Вы также можете подумать о публикации этого вопроса в stackoverflow, поскольку он больше ориентирован на вопросы программирования.

semaj
источник
3

со страницы википедии на MD5 :

... было показано, что MD5 не защищен от столкновений как таковой, MD5 не подходит для приложений, таких как SSL-сертификаты или цифровые подписи, которые полагаются на это свойство.

и от исследователей SSL на той же странице:

Мы также надеемся, что использование MD5 в других приложениях также будет пересмотрено.

Я понимаю, что вы, вероятно, не хотите это слышать, но вам действительно нужен MD5? Он не должен использоваться в криптографических целях, так как он слишком небезопасен (и есть множество лодок с радужными таблицами). Если вы ищете что-то для проверки данных, посмотрите CRC (код здесь ), который в вычислительном отношении дешевле. Если будете использовать его для криптографических целей , хотя, то , возможно , я предлагаю двигаться к SHA ? Единственная проблема заключается в том, что большинство криптографически безопасных алгоритмов не особенно хорошо работают на микроконтроллерах. Я знаю, что может показаться, что MD5 "достаточно хорош", но инженерный путь заключается в том, чтобы ошибиться в сторону осторожности.

Jeremy
источник
1
Не исключайте полностью MD5: ваше утверждение «Его не следует использовать в криптографических целях, так как оно слишком небезопасно» слишком обобщенно.
Джейсон С
1
Также не используйте тот факт, что алгоритм хеширования имеет или не имеет радужных таблиц, чтобы использовать его или нет. Если у SHA сейчас не так много радужных таблиц, так будет. Добавьте секретную «соль» к сообщению, чтобы обойти эту проблему.
Джейсон С