diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2010-11-16 01:55:15 -0500 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2010-11-16 01:55:15 -0500 |
| commit | 1fb544fb5bc51b7f487b0cfdda384108c8fab2df (patch) | |
| tree | 2fed636e6d71d39cbacbc47c75924bc46ff97941 | |
| parent | a7305603a8a44683c017bb30fb40a5ea22edcde7 (diff) | |
| download | alias-1fb544fb5bc51b7f487b0cfdda384108c8fab2df.tar.gz | |
Complete rewite of crypto.py
crypto.py now uses keyczar. The examples are now much more
representative of the type of encryptions in alias
| -rw-r--r-- | crypto.py | 53 |
1 files changed, 26 insertions, 27 deletions
@@ -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 |
