python流式加密

img


输入一个任意长度可见字符串组成的字符串,并随机生成一个等长度的随机密钥并保存
在文件中,采用按位异或的方式进行二进制加密,并将该加密结果保存在一个文件中,解密
时课导入该密文和密钥进行解密,将解密结果进行输出。

【以下回答由 GPT 生成】

可以使用Python的random库生成随机密钥,并使用按位异或进行加密和解密操作。以下是具体的解决方案:

  1. 首先,导入random库和os库(用于文件操作):
import random
import os
  1. 定义一个函数用于生成随机密钥:
def generate_key(length):
    key = ""
    for _ in range(length):
        key += chr(random.randint(32, 126))
    return key

该函数将生成指定长度的随机密钥,每个字符的ASCII码在可见字符范围内(32-126)。

  1. 定义一个函数用于加密字符串并保存密文到文件:
def encrypt_string(input_string, output_file):
    key = generate_key(len(input_string))
    encrypted_string = ""
    for i in range(len(input_string)):
        encrypted_string += chr(ord(input_string[i]) ^ ord(key[i]))

    with open(output_file, 'w') as f:
        f.write(encrypted_string)

    with open('key.txt', 'w') as f:
        f.write(key)

    return encrypted_string

该函数将输入字符串按位异或加密,并将加密结果保存到指定的文件中,同时将密钥保存到名为key.txt的文件中。

  1. 定义一个函数用于解密密文并返回解密结果:
def decrypt_string(ciphertext, key_file):
    with open(key_file, 'r') as f:
        key = f.read()

    decrypted_string = ""
    for i in range(len(ciphertext)):
        decrypted_string += chr(ord(ciphertext[i]) ^ ord(key[i]))

    return decrypted_string

该函数将导入密文和密钥文件,进行按位异或解密操作,并返回解密结果。

  1. 调用函数进行加密和解密操作:
# 示例输入字符串
input_string = "Hello, world!"

# 加密字符串并保存密文到文件
ciphertext = encrypt_string(input_string, 'encrypted.txt')

# 解密密文并输出解密结果
decrypted_string = decrypt_string(ciphertext, 'key.txt')

print("加密结果:", ciphertext)
print("解密结果:", decrypted_string)

通过以上代码,您可以实现对任意长度的可见字符串进行加密和解密,并将加密结果和密钥保存到文件中。请注意,为了确保密钥的安全性,您需要妥善保管密钥文件。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

这是一个使用Python进行流式加密和解密的任务。首先,我们需要定义一个函数来生成随机密钥。然后,我们将使用按位异或操作符^进行加密和解密。

以下是实现这个任务的Python代码:

import os
import random

def generate_key(length):
    """生成一个给定长度的随机密钥"""
    chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    return ''.join(random.choice(chars) for _ in range(length))

def xor_cypher(text, key):
    """使用异或操作进行加密和解密"""
    key = bytes(ord(c) for c in key)
    text = bytes(ord(c) for c in text)
    encrypted = bytearray()
    for i in range(len(text)):
        encrypted.append(text[i] ^ key[i % len(key)])
    return encrypted

def save_to_file(data, filename):
    """将数据保存到文件"""
    with open(filename, 'wb') as f:
        f.write(data)

def load_from_file(filename):
    """从文件加载数据"""
    with open(filename, 'rb') as f:
        return f.read()

# 生成随机密钥并保存到文件
key = generate_key(len(input_text))
save_to_file(key.encode(), 'key.txt')

# 加密原始文本并保存到文件
encrypted_data = xor_cypher(input_text, key)
save_to_file(encrypted_data, 'encrypted.bin')

# 从文件加载密钥和加密数据
loaded_key = load_from_file('key.txt').decode()
loaded_data = load_from_file('encrypted.bin')

# 解密并输出结果
decrypted_data = xor_cypher(loaded_data, loaded_key)
print(decrypted_data.decode())

注意:此代码假定输入的文本是可见的ASCII字符,并且密钥也是可见的ASCII字符。如果您的输入或密钥可能包含非ASCII字符,或者可能包含二进制数据,您需要对此代码进行修改以适应这些情况。