diff --git a/message_parsers.cpp b/message_parsers.cpp
index 6cdd694..66030cf 100644
--- a/message_parsers.cpp
+++ b/message_parsers.cpp
@@ -213,12 +213,27 @@
 
     size_t payloadLen = 0;
 
-    header->payloadLength = endian::to_ipmi<uint16_t>(
-             outMessage.payload.size());
-    payloadLen = outMessage.payload.size();
-    // Insert the Payload into the Packet
-    packet.insert(packet.end(), outMessage.payload.begin(),
-                  outMessage.payload.end());
+    // Encrypt the payload if needed
+    if (outMessage.isPacketEncrypted)
+    {
+        header->payloadType |= PAYLOAD_ENCRYPT_MASK;
+        auto cipherPayload = internal::encryptPayload(outMessage);
+        payloadLen = cipherPayload.size();
+        header->payloadLength = endian::to_ipmi<uint16_t>(cipherPayload.size());
+
+        // Insert the encrypted payload into the outgoing IPMI packet
+        packet.insert(packet.end(), cipherPayload.begin(), cipherPayload.end());
+    }
+    else
+    {
+        header->payloadLength = endian::to_ipmi<uint16_t>(
+                outMessage.payload.size());
+        payloadLen = outMessage.payload.size();
+
+        // Insert the Payload into the Packet
+        packet.insert(packet.end(), outMessage.payload.begin(),
+                      outMessage.payload.end());
+    }
 
     if (outMessage.isPacketAuthenticated)
     {
@@ -334,6 +349,14 @@
                                                   payloadLen);
 }
 
+std::vector<uint8_t> encryptPayload(Message& message)
+{
+    auto session = (std::get<session::Manager&>(singletonPool).getSession(
+                        message.bmcSessionID)).lock();
+
+    return session->getCryptAlgo()->encryptPayload(message.payload);
+}
+
 } // namespace internal
 
 } // namespace ipmi20parser
diff --git a/message_parsers.hpp b/message_parsers.hpp
index 774b985..fc82abc 100644
--- a/message_parsers.hpp
+++ b/message_parsers.hpp
@@ -208,6 +208,15 @@
                                     const Message& message,
                                     size_t payloadLen);
 
+/*
+ * @brief Encrypt the plain text payload for the outgoing IPMI packet
+ *
+ * @param[in] message - IPMI Message populated for the outgoing packet
+ *
+ * @return on successful completion, return the encrypted payload
+ */
+std::vector<uint8_t> encryptPayload(Message& message);
+
 } // namespace internal
 
 } // namespace ipmi20parser
