1# Author: Trevor Perrin 2# See the LICENSE file for legal information regarding use of this file. 3 4"""Abstract class for 3DES.""" 5 6class TripleDES(object): 7 def __init__(self, key, mode, IV, implementation): 8 if len(key) != 24: 9 raise ValueError() 10 if mode != 2: 11 raise ValueError() 12 if len(IV) != 8: 13 raise ValueError() 14 self.isBlockCipher = True 15 self.block_size = 8 16 self.implementation = implementation 17 self.name = "3des" 18 19 #CBC-Mode encryption, returns ciphertext 20 #WARNING: *MAY* modify the input as well 21 def encrypt(self, plaintext): 22 assert(len(plaintext) % 8 == 0) 23 24 #CBC-Mode decryption, returns plaintext 25 #WARNING: *MAY* modify the input as well 26 def decrypt(self, ciphertext): 27 assert(len(ciphertext) % 8 == 0) 28