June 18, 2012
11:20 p.m.
On Mon, 2012-06-18 at 17:58 -0500, Lindsay Haisley wrote:
FWIW, pursuant to Stephen's comments re. using encryption rather than hashing for passing recipient addresses in headers, I've attached a short Python script which puts short strings of data, such as an email address, into an AES cipher.
It looks as if the attachment got stripped. Here's the script, based on information at http://www.codekoala.com/blog/2009/aes-encryption-python-using-pycrypto/
class AEScrypt: from Crypto.Cipher import AES from Crypto.Util import randpool import base64
block_size = 16
key_size = 32
mode = AES.MODE_CBC
def genkey(self):
key_bytes = self.randpool.RandomPool(512).get_bytes(self.key_size)
key_string = self.base64.urlsafe_b64encode(str(key_bytes))
return key_string
def encrypt(self, plain_text, key_string):
pad = self.block_size - len(plain_text) % self.block_size
data = plain_text + pad * chr(pad)
iv_bytes = self.randpool.RandomPool(512).get_bytes(self.block_size)
encrypted_bytes = iv_bytes + self.AES.new(self.base64.urlsafe_b64decode(key_string),
self.mode, iv_bytes).encrypt(data)
return self.base64.urlsafe_b64encode(str(encrypted_bytes))
def decrypt(self, cypher_text, key_string):
key_bytes = self.base64.urlsafe_b64decode(key_string)
encrypted_bytes = self.base64.urlsafe_b64decode(cypher_text)
iv_bytes = encrypted_bytes[:self.block_size]
encrypted_bytes = encrypted_bytes[self.block_size:]
plain_text = self.AES.new(key_bytes, self.mode, iv_bytes).decrypt(encrypted_bytes)
pad = ord(plain_text[-1])
return plain_text[:-pad]
--
Lindsay Haisley | "In an open world, who needs
FMP Computer Services | Windows or Gates"
512-259-1190 |
http://www.fmp.com |