diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php
index b66be26370f3922563d0659366ea0ea4acb9617c..7c633b7411fbaace38c056c9db906811acc046a0 100644
--- a/apps/encryption/lib/crypto/encryption.php
+++ b/apps/encryption/lib/crypto/encryption.php
@@ -100,13 +100,13 @@ class Encryption implements IEncryptionModule {
 			$this->cipher = $this->crypt->getCipher();
 		}
 
-		$this->path = $path;
+		$this->path = $this->getPathToRealFile($path);
 		$this->accessList = $accessList;
 		$this->user = $user;
 		$this->writeCache = '';
 		$this->isWriteOperation = false;
 
-		$this->fileKey = $this->keyManager->getFileKey($path, $this->user);
+		$this->fileKey = $this->keyManager->getFileKey($this->path, $this->user);
 
 		return array('cipher' => $this->cipher);
 	}
@@ -135,7 +135,7 @@ class Encryption implements IEncryptionModule {
 			$publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys);
 
 			$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
-			$this->keyManager->setAllFileKeys($path, $encryptedKeyfiles);
+			$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
 		}
 		return $result;
 	}
@@ -313,4 +313,16 @@ class Encryption implements IEncryptionModule {
 	public function getUnencryptedBlockSize() {
 		return 6126;
 	}
+
+	protected function getPathToRealFile($path) {
+		$realPath = $path;
+		$parts = explode('/', $path);
+		if ($parts[2] === 'files_versions') {
+			$realPath = '/' . $parts[1] . '/files/' . implode('/', array_slice($parts, 3));
+			$length = strrpos($realPath, '.');
+			$realPath = substr($realPath, 0, $length);
+		}
+
+		return $realPath;
+	}
 }
diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..7f3a16a36b091af1c67f2cec9166e7874fb97102
--- /dev/null
+++ b/apps/encryption/tests/lib/crypto/encryptionTest.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * ownCloud
+ *
+ * @copyright (C) 2015 ownCloud, Inc.
+ *
+ * @author Bjoern Schiessle <schiessle@owncloud.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace OCA\Encryption\Tests\Crypto;
+
+use Test\TestCase;
+use OCA\Encryption\Crypto\Encryption;
+
+class EncryptionTest extends TestCase {
+
+	/** @var Encryption */
+	private $instance;
+
+	/** @var \PHPUnit_Framework_MockObject_MockObject */
+	private $keyManagerMock;
+
+	/** @var \PHPUnit_Framework_MockObject_MockObject */
+	private $cryptMock;
+
+	/** @var \PHPUnit_Framework_MockObject_MockObject */
+	private $utilMock;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')
+			->disableOriginalConstructor()
+			->getMock();
+		$this->utilMock = $this->getMockBuilder('OCA\Encryption\Util')
+			->disableOriginalConstructor()
+			->getMock();
+		$this->keyManagerMock = $this->getMockBuilder('OCA\Encryption\KeyManager')
+			->disableOriginalConstructor()
+			->getMock();
+
+		$this->instance = new Encryption($this->cryptMock, $this->keyManagerMock, $this->utilMock);
+	}
+
+	/**
+	 * @dataProvider dataProviderForTestGetPathToRealFile
+	 */
+	public function testGetPathToRealFile($path, $expected) {
+		$result = \Test_Helper::invokePrivate($this->instance, 'getPathToRealFile', array($path));
+		$this->assertSame($expected,
+			\Test_Helper::invokePrivate($this->instance, 'getPathToRealFile', array($path))
+		);
+	}
+
+	public function dataProviderForTestGetPathToRealFile() {
+		return array(
+			array('/user/files/foo/bar.txt', '/user/files/foo/bar.txt'),
+			array('/user/files/foo.txt', '/user/files/foo.txt'),
+			array('/user/files_versions/foo.txt.v543534', '/user/files/foo.txt'),
+			array('/user/files_versions/foo/bar.txt.v5454', '/user/files/foo/bar.txt'),
+		);
+	}
+
+
+}
\ No newline at end of file