Replace assertions with real error checks
diff --git a/cryptography/fernet.py b/cryptography/fernet.py
index c0c5631..c5474af 100644
--- a/cryptography/fernet.py
+++ b/cryptography/fernet.py
@@ -38,7 +38,10 @@
             backend = default_backend()
 
         key = base64.urlsafe_b64decode(key)
-        assert len(key) == 32
+        if len(key) != 32:
+            raise ValueError(
+                "Fernet key must be 32 url-safe base64-encoded bytes"
+            )
 
         self._signing_key = key[:16]
         self._encryption_key = key[16:]
@@ -88,7 +91,9 @@
         except (TypeError, binascii.Error):
             raise InvalidToken
 
-        assert six.indexbytes(data, 0) == 0x80
+        if six.indexbytes(data, 0) != 0x80:
+            raise InvalidToken
+
         timestamp = struct.unpack(">Q", data[1:9])[0]
         iv = data[9:25]
         ciphertext = data[25:-32]
diff --git a/tests/test_fernet.py b/tests/test_fernet.py
index 48df867..7766118 100644
--- a/tests/test_fernet.py
+++ b/tests/test_fernet.py
@@ -69,6 +69,11 @@
         with pytest.raises(InvalidToken):
             f.decrypt(token.encode("ascii"), ttl=ttl_sec)
 
+    def test_invalid_start_byte(self, backend):
+        f = Fernet(Fernet.generate_key(), backend=backend)
+        with pytest.raises(InvalidToken):
+            f.decrypt(base64.urlsafe_b64encode(b"\x81"))
+
     def test_unicode(self, backend):
         f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend)
         with pytest.raises(TypeError):
@@ -84,3 +89,7 @@
     def test_default_backend(self):
         f = Fernet(Fernet.generate_key())
         assert f._backend is default_backend()
+
+    def test_bad_key(self, backend):
+        with pytest.raises(ValueError):
+            Fernet(base64.urlsafe_b64encode(b"abc"), backend=backend)