采用XOR加密方式。
def encrypt_file(encrypt_path, decrypt_path, key):
with open(encrypt_path, "rb") as encrypt_file, open(decrypt_path, "wb") as decrypt_file:
# 将key转化为字节码数据,并计算出所需要的字节长度
key_bytes = key.to_bytes((key.bit_length() + 7) // 8, byteorder="big")
key_len = len(key_bytes)
# 将明文按所需字节长度读入缓冲区
buffer = encrypt_file.read(key_len)
# 循环缓冲区
while buffer:
encrypted_buffer = bytes([b ^ k for b, k in zip(buffer, key_bytes)])
decrypt_file.write(encrypted_buffer)
buffer = encrypt_file.read(key_len)
def decrypt_file(decrypt_path, encrypt_path, key):
with open(decrypt_path, "rb") as decrypt_file, open(encrypt_path, "wb") as encrypt_file:
key_bytes = key.to_bytes((key.bit_length() + 7) // 8, byteorder="big")
key_len = len(key_bytes)
buffer = decrypt_file.read(key_len)
while buffer:
decrypted_buffer = bytes([b ^ k for b, k in zip(buffer, key_bytes)])
encrypt_file.write(decrypted_buffer)
buffer = decrypt_file.read(key_len)
if __name__=="__main__":
key = 0b1111_0000
# 加密
encrypt_file("./Python/data/encrypt.txt", "./Python/data/decrypt.txt", key)
# 解密
decrypt_file("./Python/data/decrypt.txt", "./Python/data/encrypt.txt", key)