diff --git a/cryptography/primitives/block/ciphers.py b/cryptography/primitives/block/ciphers.py
index 4ac150a..7363aeb 100644
--- a/cryptography/primitives/block/ciphers.py
+++ b/cryptography/primitives/block/ciphers.py
@@ -52,3 +52,15 @@
     @property
     def key_size(self):
         return len(self.key) * 8
+
+
+class TripleDES(object):
+    name = "3DES"
+    block_size = 64
+    # TODO: is there a better way to represent the fact that the effective key
+    # size is 56 bits?
+    key_sizes = set([64, 128, 192])
+
+    def __init__(self, key):
+        super(TripleDES, self).__init__()
+        self.key = key
diff --git a/docs/primitives/symmetric-encryption.rst b/docs/primitives/symmetric-encryption.rst
index c4bbf0a..77d9791 100644
--- a/docs/primitives/symmetric-encryption.rst
+++ b/docs/primitives/symmetric-encryption.rst
@@ -61,6 +61,25 @@
                       This must be kept secret.
 
 
+Insecure Ciphers
+----------------
+
+.. class:: cryptography.primitives.block.ciphers.TripleDES(key)
+
+    Triple DES (Data Encryption Standard), sometimes refered to as 3DES, is a
+    block cipher standardized by NIST. Triple DES should be considered to be
+    cryptographically broken and should not be used for new applications, old
+    applications should strongly consider moving away from it.
+
+    :param bytes key: The secret key, either ``64``, ``128``, or ``192`` bits
+                      (note that DES functionally uses ``56``, ``112``, or
+                      ``168`` bits of the key, there is a parity byte in each
+                      component of the key), in some materials these are
+                      referred to as being up to three separate keys (each
+                      ``56`` bits long), they can simply be concatenated to
+                      produce the full key. This must be kept secret.
+
+
 Modes
 ~~~~~
 
diff --git a/tests/primitives/test_nist.py b/tests/primitives/test_nist.py
index d97b207..ceecd57 100644
--- a/tests/primitives/test_nist.py
+++ b/tests/primitives/test_nist.py
@@ -164,3 +164,72 @@
         lambda key, iv: ciphers.AES(binascii.unhexlify(key)),
         lambda key, iv: modes.CFB(binascii.unhexlify(iv)),
     )
+
+
+class TestTripleDES_CBC(object):
+    test_KAT1 = generate_encrypt_test(
+        lambda path: load_nist_vectors_from_file(path, "ENCRYPT"),
+        os.path.join("3DES", "KAT"),
+        [
+            "TCBCinvperm.rsp",
+            "TCBCpermop.rsp",
+            "TCBCsubtab.rsp",
+            "TCBCvarkey.rsp",
+            "TCBCvartext.rsp",
+        ],
+        lambda keys, iv: ciphers.TripleDES(binascii.unhexlify(keys)),
+        lambda keys, iv: modes.CBC(iv),
+    )
+
+    test_KAT2 = generate_encrypt_test(
+        lambda path: load_nist_vectors_from_file(path, "ENCRYPT"),
+        os.path.join("3DES", "KAT"),
+        [
+            "TCBCIpermop.rsp",
+            "TCBCIsubtab.rsp",
+            "TCBCIvarkey.rsp",
+            "TCBCIvartext.rsp",
+        ],
+        lambda keys, iv1, iv2, iv3: ciphers.TripleDES(binascii.unhexlify(keys)),
+        lambda keys, iv1, iv2, iv3: modes.CBC(iv1 + iv2 + iv3),
+    )
+
+    @parameterize_encrypt_test(
+        "3DES", "KAT",
+        ("keys", "iv1", "iv2", "iv3", "plaintext1", "ciphertext3"),
+        [
+            "TCBCIinvperm.rsp",
+        ]
+    )
+    def test_KAT_3(self, keys, iv1, iv2, iv3, plaintext1, ciphertext3):
+        cipher = BlockCipher(
+            ciphers.TripleDES(binascii.unhexlify(keys)),
+            modes.CBC(binascii.unhexlify(iv1 + iv2 + iv3)),
+        )
+        actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext1))
+        actual_ciphertext += cipher.finalize()
+        assert binascii.hexlify(actual_ciphertext) == ciphertext3
+
+    test_MMT1 = generate_encrypt_test(
+        lambda path: load_nist_vectors_from_file(path, "ENCRYPT"),
+        os.path.join("3DES", "MMT"),
+        [
+            "TCBCIMMT1.rsp",
+            "TCBCIMMT2.rsp",
+            "TCBCIMMT3.rsp",
+        ],
+        lambda key1, key2, key3, iv1, iv2, iv3: ciphers.TripleDES(binascii.unhexlify(key1 + key2 + key3)),
+        lambda key1, key2, key3, iv1, iv2, iv3: modes.CBC(iv1 + iv2 + iv3),
+    )
+
+    test_MMT1 = generate_encrypt_test(
+        lambda path: load_nist_vectors_from_file(path, "ENCRYPT"),
+        os.path.join("3DES", "MMT"),
+        [
+            "TCBCMMT1.rsp",
+            "TCBCMMT2.rsp",
+            "TCBCMMT3.rsp",
+        ],
+        lambda key1, key2, key3, iv: ciphers.TripleDES(binascii.unhexlify(key1 + key2 + key3)),
+        lambda key1, key2, key3, iv: modes.CBC(iv),
+    )
