diff --git a/Makefile.am b/Makefile.am
index 0b94db4..cada5a2 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -34,7 +34,9 @@
 	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
 	$(SDBUSPLUS_LIBS) \
 	$(PHOSPHOR_LOGGING_LIBS) \
-	-lstdc++fs
+	-lstdc++fs \
+	-lssl \
+	-lcrypto
 
 org/openbmc/Associations/server.cpp: org/openbmc/Associations.interface.yaml
 	@mkdir -p `dirname $@`
diff --git a/version.cpp b/version.cpp
index 013cc68..8e36071 100644
--- a/version.cpp
+++ b/version.cpp
@@ -8,6 +8,7 @@
 #include <phosphor-logging/elog-errors.hpp>
 #include "xyz/openbmc_project/Common/error.hpp"
 #include "item_updater.hpp"
+#include <openssl/sha.h>
 
 namespace openpower
 {
@@ -22,7 +23,6 @@
 
 std::string Version::getId(const std::string& version)
 {
-    std::stringstream hexId;
 
     if (version.empty())
     {
@@ -31,10 +31,20 @@
                               Argument::ARGUMENT_VALUE(version.c_str()));
     }
 
-    // Only want 8 hex digits.
-    hexId << std::hex << ((std::hash<std::string> {}(
-                               version)) & 0xFFFFFFFF);
-    return hexId.str();
+    unsigned char digest[SHA512_DIGEST_LENGTH];
+    SHA512_CTX ctx;
+    SHA512_Init(&ctx);
+    SHA512_Update(&ctx, version.c_str(), strlen(version.c_str()));
+    SHA512_Final(digest, &ctx);
+    char mdString[SHA512_DIGEST_LENGTH*2+1];
+    for (int i = 0; i < SHA512_DIGEST_LENGTH; i++)
+    {
+        snprintf(&mdString[i*2], 3, "%02x", (unsigned int)digest[i]);
+    }
+
+    // Only need 8 hex digits.
+    std::string hexId = std::string(mdString);
+    return (hexId.substr(0, 8));
 }
 
 std::map<std::string, std::string> Version::getValue(
