Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BS = 16
- pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
- unpad = lambda s : s[:-ord(s[len(s)-1:])]
- class AESCipher:
- def __init__(self,sec_param):
- self.sec_param = sec_param
- self.key = os.urandom(sec_param)
- #msg is string only
- def encrypt( self, msg):
- msg = pad(msg)
- tweak = Random.new().read( AES.block_size )
- cipher = AES.new(self.key, AES.MODE_CFB, tweak )
- return base64.b64encode(tweak + cipher.encrypt( msg ) )
- def decrypt(self, enc):
- enc = base64.b64decode(enc)
- tweak = enc[:16]
- cipher = AES.new(self.key, AES.MODE_CFB, tweak)
- return unpad(cipher.decrypt( enc[16:] ))
- class BC(object):
- def __init__(self, sec_param):
- self.sec_param = sec_param
- def encrypt(self, message):
- return AESCipher(sec_param).encrypt(message)
- def decrypt(self, encryption):
- return AESCipher(self.sec_param).decrypt(encryption)
- msg = '100011010111110'
- sec_param = 16
- bc = BC(sec_param)
- encr = bc.encrypt(msg)
- decr = bc.decrypt(encr)
- new_cipher = AESCipher(sec_param)
- C = new_cipher.encrypt(msg)
- D= new_cipher.decrypt(C)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement