diff --git a/cryptography/fernet.py b/cryptography/fernet.py
index 549abb3..59d8ad0 100644
--- a/cryptography/fernet.py
+++ b/cryptography/fernet.py
@@ -41,16 +41,20 @@
         # TODO: whole function is a giant hack job with no error checking
         data = base64.urlsafe_b64decode(data)
         assert data[0] == b"\x80"
+        timestamp = data[1:9]
+        iv = data[9:25]
+        ciphertext = data[25:-32]
+        hmac = data[-32:]
         if ttl is not None:
-            if struct.unpack(">Q", data[1:9])[0] + ttl > int(time.time()):
+            if struct.unpack(">Q", timestamp)[0] + ttl > int(time.time()):
                 raise ValueError
         h = HMAC(self.signing_key, digestmod=hashes.SHA256)
         h.update(data[:-32])
         hmac = h.digest()
         if not constant_time_compare(hmac, data[-32:]):
             raise ValueError
-        unencryptor = BlockCipher(ciphers.AES(self.encryption_key), modes.CBC(data[9:25])).unencryptor()
-        plaintext_padded = unencryptor.update(data[25:-32]) + unencryptor.finalize()
+        unencryptor = BlockCipher(ciphers.AES(self.encryption_key), modes.CBC(iv)).unencryptor()
+        plaintext_padded = unencryptor.update(ciphertext) + unencryptor.finalize()
         unpadder = padding.PKCS7(ciphers.AES.block_size).unpadder()
         return unpadder.update(plaintext_padded) + unpadder.finalize()
 
