Python对文件加密操作

采用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)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值