aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2010-11-16 01:55:15 -0500
committerGuillaume Horel <guillaume.horel@gmail.com>2010-11-16 01:55:15 -0500
commit1fb544fb5bc51b7f487b0cfdda384108c8fab2df (patch)
tree2fed636e6d71d39cbacbc47c75924bc46ff97941
parenta7305603a8a44683c017bb30fb40a5ea22edcde7 (diff)
downloadalias-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.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