MD5-Hash

From Nutwiki
Jump to: navigation, search

The Message-Digest Algorithm 5 (MD5-Hash) is provided by the optional Gorp Library.

Test Suite Source Code

The contents of nutapp/testmd5/testmd5.c is:

<source lang="c">

  1. include <dev/board.h>
  2. include <gorp/md5.h>
  1. include <stdio.h>
  2. include <string.h>

static MD5CONTEXT context; static uint8_t digest[16];

static char *test[] = {

   "",
   "a",
   "abc",
   "message digest",
   "abcdefghijklmnopqrstuvwxyz",
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
   "12345678901234567890123456789012345678901234567890123456789012345678901234567890",
   NULL

};

int main(void) {

   int i;
   int j;
   NutRegisterDevice(&DEV_CONSOLE, 0, 0);
   freopen(DEV_CONSOLE.dev_name, "w", stdout);
   puts("\nMD5 Test Suite " __DATE__ " " __TIME__);
   for (i = 0; test[i]; i++) {
       NutMD5Init(&context);
       NutMD5Update(&context, (uint8_t *)test[i], strlen(test[i]));
       NutMD5Final(&context, digest);
       printf("MD5 (\"%s\") = ", test[i]);
       for (j = 0; j < 16; j++) {
           printf("%02x", digest[j]);
       }
       putchar('\n');
   }
   for (;;);
   return 0;

} </source>

Test Suite Makefile

Note, that lines must me intended with tabs, not spaces.

PROJ = testmd5

include ../Makedefs

SRCS =  $(PROJ).c
OBJS =  $(SRCS:.c=.o)
LIBS =  $(LIBDIR)/nutinit.o -lnutpro -lnutnet -lnutgorp -lnutfs -lnutcrt -lnutos -lnutdev -lnutarch

all: $(OBJS) $(TARG) $(ITARG) $(DTARG)

include ../Makerules

clean:
        -rm -f $(OBJS)
        -rm -f $(TARG) $(ITARG) $(DTARG)
        -rm -f $(PROJ).map
        -rm -f $(SRCS:.c=.lst)
        -rm -f $(SRCS:.c=.d)

Test Suite Result

Tested on the Elektor Internet Radio, the output equates to http://tools.ietf.org/html/rfc1321.

MD5 Test Suite Oct 10 2012 18:31:11
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =
d174ab98d277d9f5a5611c2c9f419d9f
MD5 ("123456789012345678901234567890123456789012345678901234567890123456
78901234567890") = 57edf4a22be3c955ac49da2e2107b67a