记录一个简单的学习过程,没有注释
from Crypto.Cipher import AES
import os
def encrypt(filepath):
key = b'todeyiswonderful-FEDCBA987654321'
mode = AES.MODE_CBC
iv = b'1234567890ABCDEF'
block_size = AES.block_size
with open(filepath,mode='rb') as file:
data = file.read()
padding_size = block_size - (len(data) % block_size)
padding_data = data + bytes([padding_size] * padding_size)
cryptos = AES.new(key,mode,iv)
cipher = cryptos.encrypt(padding_data)
with open(filepath + '.enc','wb') as file:
file.write(cipher)
os.remove(filepath)
def decrypt(filepath):
key = b'todeyiswonderful-FEDCBA987654321'
mode = AES.MODE_CBC
iv = b'1234567890ABCDEF'
block_size = AES.block_size
with open(filepath,mode='rb') as file:
content = file.read()
cryptos = AES.new(key,mode,iv)
cipher = cryptos.decrypt(content)
padding_size = cipher[-1]
if padding_size < block_size:
cipher = cipher[:-padding_size]
with open(filepath.replace('.enc',''),mode='wb') as file:
file.write(cipher)
os.remove(filepath)
if __name__ == '__main__':
#encrypt('./test.jpg')
decrypt('./test.jpg.enc')

820

被折叠的 条评论
为什么被折叠?



