new file mode 100644
--- /dev/null
+++ b/md5.c
@@ -0,0 +1,47 @@
+/**
+ * test/demos/md5.c
+ * Copyright (C) 2008 Markus Broeker
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <openssl/md5.h>
+
+typedef unsigned char u_char;
+
+int main (int argc, char **argv)
+{
+ char buffer[80];
+ char text[80];
+
+ unsigned char *md5_hash;
+ char result[33];
+ char byte[3];
+
+ int i, j;
+
+ if (argc != 2) {
+ printf ("Usage: %s <text>\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ /*
+ * MD5 alters the input buffer
+ */
+ strcpy (buffer, argv[1]);
+ strcpy (text, argv[1]);
+
+ md5_hash = MD5 ((u_char *) buffer, strlen (buffer), NULL);
+
+ for (i = 0, j = 0; i < 16; i++) {
+ sprintf (byte, "%02x", (md5_hash[i] & 0xFF));
+ result[j++] = byte[0];
+ result[j++] = byte[1];
+ }
+
+ result[j] = 0;
+ printf ("%s: %s\n", text, result);
+
+ return EXIT_SUCCESS;
+}