From 1fb544fb5bc51b7f487b0cfdda384108c8fab2df Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Tue, 16 Nov 2010 01:55:15 -0500 Subject: Complete rewite of crypto.py crypto.py now uses keyczar. The examples are now much more representative of the type of encryptions in alias --- crypto.py | 53 ++++++++++++++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 27 deletions(-) (limited to 'crypto.py') diff --git a/crypto.py b/crypto.py index c5d28d2..b575f55 100644 --- a/crypto.py +++ b/crypto.py @@ -1,29 +1,28 @@ -from Crypto.Cipher import AES -import os +from keyczar import keys +import ssh_rsa_key_util -def encrypt(msg,key,block_size): - pad = block_size - len(msg) % block_size - data = msg + pad * chr(pad) - iv = os.urandom(block_size) - cipheredtext = iv + AES.new(key, AES.MODE_CBC, iv).encrypt(data) - return cipheredtext - -def decrypt(cipheredtext,key,block_size): - iv = cipheredtext[:block_size] - msg = AES.new(key, AES.MODE_CBC, iv).decrypt(cipheredtext[block_size:]) - #remove the padding - pad = ord(msg[-1]) - msg = msg[:-pad] - return msg - if __name__ == '__main__' : - block_size = 16 - key_size = 32 - key = os.urandom(key_size) - - msg1 = 'Guillaume is a genius!' - msg2 = encrypt(msg1,key,block_size) - msg3 = decrypt(msg2,key,block_size) - print "original message: " + msg1 - print "encrypted message: " + msg2.encode('hex') - print 'verification: ' + msg3 + #load asymmetric keys for 2 users. user1 key is generated, + #while user2 key is loaded from disk + keyuser1 = keys.RsaPrivateKey.Generate() + keyuser1public = keyuser1.public_key + ssh_keys_directory='/home/guillaume/.ssh/' + keyuser2 = ssh_rsa_key_util.SshRsaPrivateKey.Read(ssh_keys_directory + 'id_rsa') + keyuser2public = keyuser2.public_key + + #symmetric key to encrypt the data + key = keys.AesKey.Generate() + #encrypt symmetric key for user 1 and 2 + key1 = keyuser1public.Encrypt(key.key_string) + key2 = keyuser2public.Encrypt(key.key_string) + + msg = 'Guillaume is a genius!' + secretmsg = key.Encrypt(msg) + + #msg decoded by user 1 + newkey1 = keys.AesKey(keyuser1.Decrypt(key1),key.hmac_key) + print newkey1.Decrypt(secretmsg) + + #msg decoded by user 2 + newkey2 = keys.AesKey(keyuser1.Decrypt(key1),key.hmac_key) + print newkey2.Decrypt(secretmsg) \ No newline at end of file -- cgit v1.2.3-70-g09d2