diff --git a/lib/fog/aws.rb b/lib/fog/aws.rb
index <HASH>..<HASH> 100644
--- a/lib/fog/aws.rb
+++ b/lib/fog/aws.rb
@@ -131,10 +131,6 @@ module Fog
         "ip-#{ip_address.gsub('.','-')}.ec2.internal"
       end
 
-      def self.etag
-        Fog::Mock.random_hex(32)
-      end
-
       def self.image
         path = []
         (rand(3) + 2).times do
diff --git a/lib/fog/aws/requests/storage/put_object.rb b/lib/fog/aws/requests/storage/put_object.rb
index <HASH>..<HASH> 100644
--- a/lib/fog/aws/requests/storage/put_object.rb
+++ b/lib/fog/aws/requests/storage/put_object.rb
@@ -66,7 +66,7 @@ module Fog
             object = {
               :body             => data[:body],
               'Content-Type'    => options['Content-Type'] || data[:headers]['Content-Type'],
-              'ETag'            => Fog::AWS::Mock.etag,
+              'ETag'            => Digest::MD5.hexdigest(data[:body]),
               'Key'             => object_name,
               'Last-Modified'   => Fog::Time.now.to_date_header,
               'Content-Length'  => options['Content-Length'] || data[:headers]['Content-Length'],
[aws|storage|test] Replaced random ETag implementation with MD5, per S3 docs.