--- a/libopkg/conffile.c
+++ b/libopkg/conffile.c
@@ -36,7 +36,7 @@
 
 int conffile_has_been_modified(conffile_t *conffile)
 {
-    char *md5sum;
+    char *chksum;
     char *filename = conffile->name;
     char *root_filename;
     int ret = 1;
@@ -48,16 +48,19 @@
 
     root_filename = root_filename_alloc(filename);
 
-    md5sum = file_md5sum_alloc(root_filename);
-
-    if (md5sum && (ret = strcmp(md5sum, conffile->value))) {
-        opkg_msg(INFO, "Conffile %s:\n\told md5=%s\n\tnew md5=%s\n",
-		conffile->name, md5sum, conffile->value);
+#ifdef HAVE_MD5
+    chksum = file_md5sum_alloc(root_filename);
+#else
+    chksum = file_sha256sum_alloc(root_filename);
+#endif
+    if (chksum && (ret = strcmp(chksum, conffile->value))) {
+        opkg_msg(INFO, "Conffile %s:\n\told chk=%s\n\tnew chk=%s\n",
+		conffile->name, chksum, conffile->value);
     }
 
     free(root_filename);
-    if (md5sum)
-        free(md5sum);
+    if (chksum)
+        free(chksum);
 
     return ret;
 }
--- a/libopkg/file_util.c
+++ b/libopkg/file_util.c
@@ -26,7 +26,9 @@
 
 #include "sprintf_alloc.h"
 #include "file_util.h"
+#ifdef HAVE_MD5
 #include "md5.h"
+#endif
 #include "libbb/libbb.h"
 
 #if defined HAVE_SHA256
@@ -135,6 +137,7 @@
 	return make_directory(path, mode, FILEUTILS_RECUR);
 }
 
+#ifdef HAVE_MD5
 char *file_md5sum_alloc(const char *file_name)
 {
     static const int md5sum_bin_len = 16;
@@ -180,6 +183,7 @@
 
     return md5sum_hex;
 }
+#endif
 
 #ifdef HAVE_SHA256
 char *file_sha256sum_alloc(const char *file_name)
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
@@ -1082,7 +1082,7 @@
      conffile_list_elt_t *iter;
      conffile_t *cf;
      char *cf_backup;
-     char *md5sum;
+     char *chksum;
 
      if (conf->noaction) return 0;
 
@@ -1093,7 +1093,11 @@
 
 	  /* Might need to initialize the md5sum for each conffile */
 	  if (cf->value == NULL) {
+#ifdef HAVE_MD5
 	       cf->value = file_md5sum_alloc(root_filename);
+#else
+	       cf->value = file_sha256sum_alloc(root_filename);
+#endif
 	  }
 
 	  if (!file_exists(root_filename)) {
@@ -1105,8 +1109,12 @@
 
           if (file_exists(cf_backup)) {
               /* Let's compute md5 to test if files are changed */
-              md5sum = file_md5sum_alloc(cf_backup);
-              if (md5sum && cf->value && strcmp(cf->value,md5sum) != 0 ) {
+#ifdef HAVE_MD5
+              chksum = file_md5sum_alloc(cf_backup);
+#else
+              chksum = file_sha256sum_alloc(cf_backup);
+#endif
+              if (chksum && cf->value && strcmp(cf->value,chksum) != 0 ) {
                   if (conf->force_maintainer) {
                       opkg_msg(NOTICE, "Conffile %s using maintainer's setting.\n",
 				      cf_backup);
@@ -1123,8 +1131,8 @@
 		  }
               }
               unlink(cf_backup);
-	      if (md5sum)
-                  free(md5sum);
+	      if (chksum)
+                  free(chksum);
           }
 
 	  free(cf_backup);
@@ -1323,6 +1331,7 @@
      }
      #endif
 
+#ifdef HAVE_MD5
      /* Check for md5 values */
      if (pkg->md5sum)
      {
@@ -1346,6 +1355,7 @@
 	 if (file_md5)
               free(file_md5);
      }
+#endif
 
 #ifdef HAVE_SHA256
      /* Check for sha256 value */
--- a/libopkg/Makefile.am
+++ b/libopkg/Makefile.am
@@ -25,13 +25,16 @@
 		    pkg_src.c pkg_src.h pkg_src_list.c pkg_src_list.h \
 		    str_list.c str_list.h void_list.c void_list.h \
 		    active_list.c active_list.h list.h 
-opkg_util_sources = file_util.c file_util.h opkg_message.h opkg_message.c md5.c md5.h \
+opkg_util_sources = file_util.c file_util.h opkg_message.h opkg_message.c \
 		    parse_util.c parse_util.h \
 		    sprintf_alloc.c sprintf_alloc.h \
 		    xregex.c xregex.h xsystem.c xsystem.h
 if HAVE_PATHFINDER
 opkg_util_sources += opkg_pathfinder.c opkg_pathfinder.h
 endif
+if HAVE_MD5
+opkg_util_sources += md5.c md5.h
+endif
 if HAVE_SHA256
 opkg_util_sources += sha256.c sha256.h
 endif
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,7 @@
   AC_DEFINE(HAVE_SHA256, 1, [Define if you want sha256 support])
 fi
 AM_CONDITIONAL(HAVE_SHA256, test "x$want_sha256" = "xyes")
+AM_CONDITIONAL(HAVE_MD5, test "x$want_sha256" = "xno")
 
 # check for openssl
 AC_ARG_ENABLE(openssl,
