要是能重来,我肯定会勇敢一次
加密
from Crypto.Cipher import AES
import base64
def encrypt_file(file_path, key):
chunk_size = 64 * 1024
cipher = AES.new(key.encode(), AES.MODE_ECB)
with open(file_path, 'rb') as file:
data = file.read()
encoded_data = base64.b64encode(data)
encrypted_data = cipher.encrypt(pad(encoded_data))
encrypted_data = base64.b64encode(encrypted_data)
with open('encrypted_' + file_path, 'wb') as encrypted_file:
encrypted_file.write(encrypted_data)
def pad(data):
padding = AES.block_size - (len(data) % AES.block_size)
return data + bytes([padding] * padding)
def encrypt_string(input_string):
# 将字符串转换为字节流
input_bytes = input_string.encode('utf-8')
# Base64编码
encoded_bytes = base64.b64encode(input_bytes)
# 将字节流转换回字符串
encoded_string = encoded_bytes.decode('utf-8')
return encoded_string
input_string = "密钥计算"
encoded_string = encrypt_string(input_string)
print("原始字符串:", input_string)
print("编码后字符串:", encoded_string[0:16])
key = encoded_string[0:16]
file_path = 'path'
encrypt_file(file_path, key)
解密
from Crypto.Cipher import AES
import base64
def decrypt_file(file_path, key):
chunk_size = 64 * 1024
cipher = AES.new(key.encode(), AES.MODE_ECB)
with open(file_path, 'rb') as encrypted_file:
encrypted_data = encrypted_file.read()
encrypted_data = base64.b64decode(encrypted_data)
decrypted_data = unpad(cipher.decrypt(encrypted_data))
decoded_data = base64.b64decode(decrypted_data)
with open('decrypted_' + file_path, 'wb') as decrypted_file:
decrypted_file.write(decoded_data)
def unpad(data):
padding = data[-1]
return data[:-padding]
key = '1616161616161616'
file_path = 'path'
decrypt_file(file_path, key)