1 from Crypto.Cipher import AES
2 import struct
3
4 CHUNK_SIZE = 32768
5
7 chunk = f.read(CHUNK_SIZE)
8 realn = len(chunk)
9
10 if realn == 0:
11 return ''
12
13 if realn % 16 != 0:
14 padding = 16 - (realn % 16)
15 chunk += ' ' * padding
16
17 head = struct.pack('!H', realn)
18
19 return head + aes.encrypt(chunk)
20
22 headn = struct.calcsize('!H')
23 head = f.read(headn)
24
25 if len(head) == 0:
26 return ''
27
28 realn, = struct.unpack('!H', head)
29
30 if realn % 16 != 0:
31 n = realn + (16 - (realn % 16))
32 else:
33 n = realn
34
35 chunk = f.read(n)
36 plain = aes.decrypt(chunk)
37
38 return plain[:realn]
39
53
56
59