【以下回答由 GPT 生成】
可以使用Python的random
库生成随机密钥,并使用按位异或进行加密和解密操作。以下是具体的解决方案:
random
库和os
库(用于文件操作):import random
import os
def generate_key(length):
key = ""
for _ in range(length):
key += chr(random.randint(32, 126))
return key
该函数将生成指定长度的随机密钥,每个字符的ASCII码在可见字符范围内(32-126)。
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
的文件中。
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
该函数将导入密文和密钥文件,进行按位异或解密操作,并返回解密结果。
# 示例输入字符串
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字符,或者可能包含二进制数据,您需要对此代码进行修改以适应这些情况。