diff --git a/lib/private/files/stream/encryption.php b/lib/private/files/stream/encryption.php
index fdfe73d99c53b94214897c0938fe768747f678bc..9ef666d78eda8d8bd938d0c59e8d4b0ffaffc932 100644
--- a/lib/private/files/stream/encryption.php
+++ b/lib/private/files/stream/encryption.php
@@ -249,9 +249,10 @@ class Encryption extends Wrapper {
 
 		// skip the header if we read the file from the beginning
 		if ($this->position === 0) {
-			parent::stream_read($this->util->getBlockSize());
+			parent::stream_read($this->util->getHeaderSize());
 		}
 
+		$count = min($count, $this->unencryptedSize - $this->position);
 		while ($count > 0) {
 			$remainingLength = $count;
 			// update the cache of the current block