direi che applicare l'hmac all'md5 è infinitamente più semplice di tutto sto casino di codice ^^

c'è da capire piuttosto se la loro versione è veramente standard o meno

http://www.faqs.org/rfcs/rfc2104.html
http://www.faqs.org/rfcs/rfc1321.html