Qualcuno ha qualche esempio dell'algoritmo MD5 per un microcontrollore (preferibilmente uno a 8 bit)? Il nostro progetto utilizzerà un dispositivo Microchip serie PIC18.
Qualcuno ha qualche esempio dell'algoritmo MD5 per un microcontrollore (preferibilmente uno a 8 bit)? Il nostro progetto utilizzerà un dispositivo Microchip serie PIC18.
Risposte:
Ecco l'implementazione MD5 da EtherNut (basato su AVR)
Vorrei attenermi a un'implementazione rinomata nota di MD5 e stare lontano dalle librerie che trovi da fornitori di terze parti. L'originale RFC 1321 che descriveva MD5 ha un'implementazione di esempio C.
Promemoria: i punti deboli noti per MD5 sono gli attacchi di collisione e non gli attacchi di pre-immagine , quindi è adatto per alcune applicazioni crittografiche ma non altre. Se non conosci la differenza non dovresti usarla, ma non scartarla del tutto. Vedi http://www.vpnc.org/hash.html .
Puoi trovare una buona descrizione e alcuni pseudocodici per l'algoritmo MD5 wikipedia su http://en.wikipedia.org/wiki/MD5
Potresti anche considerare di pubblicare questa domanda su StackOverflow poiché è più orientata verso le domande di programmazione.
dalla pagina di Wikipedia su MD5 :
... è stato dimostrato che MD5 non è resistente alle collisioni in quanto tale, MD5 non è adatto per applicazioni come certificati SSL o firme digitali che si basano su questa proprietà.
e dai ricercatori SSL sulla stessa pagina:
Speriamo anche che venga riconsiderato l'uso di MD5 in altre applicazioni.
Capisco che probabilmente non vuoi ascoltarlo, ma hai davvero bisogno di MD5? Non dovrebbe essere usato per scopi crittografici poiché è troppo insicuro (e ci sono carichi di barche di tavoli arcobaleno disponibili). Se stai cercando qualcosa per convalidare i dati, cerca in CRC (codice qui ) che è più economico dal punto di vista computazionale. Se lo stai usando per scopi crittografici, allora posso suggerire di passare a SHA ? L'unico problema è che la maggior parte degli algoritmi crittograficamente sicuri non funziona particolarmente bene con i microcontrollori. So che può sembrare che MD5 sia "abbastanza buono", ma il modo ingegneristico è quello di sbagliare dal lato della cautela.