aboutsummaryrefslogtreecommitdiffstats
path: root/crypto.py
diff options
context:
space:
mode:
Diffstat (limited to 'crypto.py')
-rw-r--r--crypto.py53
1 files changed, 26 insertions, 27 deletions
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