diff options
Diffstat (limited to 'crypto.py')
| -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 |
