Czy ktoś ma jakieś przykłady algorytmu MD5 dla mikrokontrolera (najlepiej 8-bitowego)? W naszym projekcie wykorzystamy urządzenie z serii Microchip PIC18.
Czy ktoś ma jakieś przykłady algorytmu MD5 dla mikrokontrolera (najlepiej 8-bitowego)? W naszym projekcie wykorzystamy urządzenie z serii Microchip PIC18.
Odpowiedzi:
Oto implementacja MD5 z EtherNut (oparta na AVR)
Trzymałbym się znanej, renomowanej implementacji MD5 i trzymałam się z dala od bibliotek, które można znaleźć u dostawców zewnętrznych. Oryginalny RFC 1321, który opisywał MD5, ma przykładową implementację C.
Przypomnienie: znanymi słabościami MD5 są ataki kolizyjne, a nie ataki preimage , więc jest odpowiedni dla niektórych aplikacji kryptograficznych, ale nie dla innych. Jeśli nie znasz różnicy, nie powinieneś jej używać, ale nie odrzucaj jej całkowicie. Zobacz http://www.vpnc.org/hash.html .
Dobry opis i pseudokod dla wikipedii algorytmu MD5 można znaleźć na stronie http://en.wikipedia.org/wiki/MD5
Możesz również rozważyć opublikowanie tego pytania w przepełnieniu stosu, ponieważ jest ono ukierunkowane bardziej na pytania dotyczące programowania.
ze strony wikipedii na MD5 :
... wykazano, że MD5 nie jest odporny na kolizję jako taki, MD5 nie nadaje się do aplikacji takich jak certyfikaty SSL lub podpisy cyfrowe oparte na tej właściwości.
i od badaczy SSL na tej samej stronie:
Mamy również nadzieję, że użycie MD5 w innych aplikacjach również zostanie ponownie rozważone.
Rozumiem, że prawdopodobnie nie chcesz tego słyszeć, ale czy naprawdę potrzebujesz MD5? Nie należy go używać do celów kryptograficznych, ponieważ jest zbyt niepewny (a dostępnych jest mnóstwo tęczowych tabel). Jeśli szukasz czegoś, co tylko zweryfikuje dane, spójrz na CRC (kod tutaj ), który jest tańszy obliczeniowo. Jeśli są z wykorzystaniem go do celów kryptograficznych choć wtedy mogę zasugerować przeniesienie do SHA ? Jedynym problemem jest to, że większość bezpiecznych algorytmów kryptograficznych nie działa szczególnie dobrze na mikrokontrolerach. Wiem, że może się wydawać, że MD5 jest „wystarczająco dobry”, ale inżynieryjnym sposobem jest błądzenie po stronie ostrożności.