diff options
-rw-r--r-- | cryptography/primitives/block/ciphers.py | 12 | ||||
-rw-r--r-- | docs/primitives/symmetric-encryption.rst | 19 |
2 files changed, 31 insertions, 0 deletions
diff --git a/cryptography/primitives/block/ciphers.py b/cryptography/primitives/block/ciphers.py index cf54aa35..f204dbe9 100644 --- a/cryptography/primitives/block/ciphers.py +++ b/cryptography/primitives/block/ciphers.py @@ -32,3 +32,15 @@ class AES(object): @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 1b8d1d73..ce3b13e8 100644 --- a/docs/primitives/symmetric-encryption.rst +++ b/docs/primitives/symmetric-encryption.rst @@ -52,6 +52,25 @@ Ciphers 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 ~~~~~ |