diff --git a/cmd/restic/fuse/file.go b/cmd/restic/fuse/file.go
index ff28ebf85..b207d939c 100644
--- a/cmd/restic/fuse/file.go
+++ b/cmd/restic/fuse/file.go
@@ -2,7 +2,6 @@ package fuse
 
 import (
 	"github.com/restic/restic"
-	"github.com/restic/restic/crypto"
 	"github.com/restic/restic/pack"
 	"github.com/restic/restic/repository"
 
@@ -25,11 +24,11 @@ type file struct {
 func newFile(repo *repository.Repository, node *restic.Node) (*file, error) {
 	sizes := make([]uint32, len(node.Content))
 	for i, blobId := range node.Content {
-		_, _, _, length, err := repo.Index().Lookup(blobId)
+		length, err := repo.Index().LookupSize(blobId)
 		if err != nil {
 			return nil, err
 		}
-		sizes[i] = uint32(length) - crypto.Extension
+		sizes[i] = uint32(length)
 	}
 
 	return &file{
diff --git a/repository/index.go b/repository/index.go
index d7bd4bf16..2fcc67cbc 100644
--- a/repository/index.go
+++ b/repository/index.go
@@ -7,6 +7,7 @@ import (
 	"sync"
 
 	"github.com/restic/restic/backend"
+	"github.com/restic/restic/crypto"
 	"github.com/restic/restic/debug"
 	"github.com/restic/restic/pack"
 )
@@ -91,6 +92,16 @@ func (idx *Index) Has(id backend.ID) bool {
 	return false
 }
 
+// LookupSize returns the length of the cleartext content behind the
+// given id
+func (idx *Index) LookupSize(id backend.ID) (cleartextLength uint, err error) {
+	_, _, _, encryptedLength, err := idx.Lookup(id)
+	if err != nil {
+		return 0, err
+	}
+	return encryptedLength - crypto.Extension, nil
+}
+
 // Merge loads all items from other into idx.
 func (idx *Index) Merge(other *Index) {
 	debug.Log("Index.Merge", "Merge index with %p", other)