· 9 years ago · Dec 23, 2016, 01:39 PM
1from Crypto import Random
2from Crypto.Cipher import AES
3from Crypto.PublicKey import RSA
4import base64
5import hashlib
6import os
7from Crypto.Cipher import PKCS1_v1_5
8import cPickle
9
10
11BS=32
12BS_IV=16
13pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
14unpad = lambda s : s[:-ord(s[len(s)-1:])]
15
16class Light:
17 def __init__(self):
18 key_AES=None
19 key_RSA_pub=None
20 key_RSA_priv=None
21
22 def trans_AES(self):
23 secret_key = os.urandom(BS)
24 secret=hashlib.sha256()
25 secret.update(secret_key)
26 self.key_AES=secret.digest()
27
28
29
30 def trans_RSA(self):
31 random_generator = Random.new().read
32 key_RSA = RSA.generate(1024, random_generator)
33 self.key_RSA_pub=RSA.importKey(key_RSA.publickey().exportKey('DER'))
34 self.key_RSA_priv=RSA.importKey(key_RSA.exportKey('DER'))
35 return RSA.importKey(key_RSA.publickey().exportKey('DER'))
36
37 def AES_encrypt(self,message):
38 message=pad(message)
39 IV = Random.new().read(BS_IV)
40 aes = AES.new(self.key_AES, AES.MODE_CFB, IV)
41 return base64.b64encode(IV + aes.encrypt(message))
42
43 def AES_decrypt(self,encrypted):
44 global key_AES
45 encrypted = base64.b64decode(encrypted)
46 IV = encrypted[:BS_IV]
47 aes = AES.new(key_AES, AES.MODE_CFB, IV)
48 return unpad(aes.decrypt(encrypted[BS_IV:]))
49 def RSA_encrypt(self, message, priv_key):
50 chiper=PKCS1_v1_5.new(priv_key)
51 chipertxt=chiper.encrypt(message)
52 #chipertxt=base64.b64encode(chipertxt)
53 return chipertxt
54 def RSA_decrypt(self, message ,pub_key):
55 dchiper=PKCS1_v1_5.new(pub_key)
56 message=base64.b64decode(message)
57 decrypted_text=dchiper.decrypt(message,"sudude")
58 print(decrypted_text)