diff --git a/src/Aws/S3/S3SignatureV4.php b/src/Aws/S3/S3SignatureV4.php
index <HASH>..<HASH> 100644
--- a/src/Aws/S3/S3SignatureV4.php
+++ b/src/Aws/S3/S3SignatureV4.php
@@ -31,14 +31,8 @@ class S3SignatureV4 extends SignatureV4 implements S3SignatureInterface
      */
     public function signRequest(RequestInterface $request, CredentialsInterface $credentials)
     {
-        if ($request instanceof EntityEnclosingRequestInterface &&
-            $request->getBody() &&
-            !$request->hasHeader('x-amz-content-sha256')
-        ) {
-            $request->setHeader(
-                'X-Amz-Content-Sha256',
-                $this->getPresignedPayload($request)
-            );
+        if (!$request->hasHeader('x-amz-content-sha256')) {
+            $request->setHeader('x-amz-content-sha256', $this->getPresignedPayload($request));
         }
 
         parent::signRequest($request, $credentials);
@@ -54,7 +48,7 @@ class S3SignatureV4 extends SignatureV4 implements S3SignatureInterface
 
         // If the body is empty, then sign with 'UNSIGNED-PAYLOAD'
         if ($result === self::DEFAULT_PAYLOAD) {
-            $result = 'UNSIGNED-PAYLOAD';
+            $result = hash('sha256', 'UNSIGNED-PAYLOAD');
         }
 
         return $result;
Fixed an issue with the SignatureV4 implementation when used with Amazon S3.