用python编写程序实现移位密码和文件读写。加密时:读取明文文件(小写字母),键盘输入密钥(一个参数);结果保存为密文文件(大写字母)。解密时:读取密文文件(大写字母),键盘输入密钥(一个参);结果保存为明文文件(小写字母)
时间: 2024-01-21 07:03:46 浏览: 25
好的,这是一个任务,我可以帮你提供一个实现方案。首先,我们需要实现移位密码的加密和解密函数。
移位密码的加密函数可以使用如下代码实现:
```python
def encrypt(plaintext, key):
ciphertext = ""
for c in plaintext:
if c.isalpha() and c.islower():
# 小写字母移位加密
ciphertext += chr((ord(c) - ord('a') + key) % 26 + ord('A'))
else:
# 非小写字母不加密
ciphertext += c
return ciphertext
```
移位密码的解密函数可以使用如下代码实现:
```python
def decrypt(ciphertext, key):
plaintext = ""
for c in ciphertext:
if c.isalpha() and c.isupper():
# 大写字母移位解密
plaintext += chr((ord(c) - ord('A') - key) % 26 + ord('a'))
else:
# 非大写字母不解密
plaintext += c
return plaintext
```
接下来,我们需要实现读写文件的函数。可以使用如下代码实现:
```python
def read_file(filename):
with open(filename, 'r') as f:
content = f.read()
return content
def write_file(filename, content):
with open(filename, 'w') as f:
f.write(content)
```
最后,我们可以将以上函数组合起来,实现完整的加密和解密程序:
```python
def main():
# 读取明文或密文文件
filename = input("请输入文件名:")
content = read_file(filename)
# 加密或解密
key = int(input("请输入密钥:"))
if filename.endswith(".txt"):
# 加密
ciphertext = encrypt(content, key)
write_file(filename[:-4] + "_encrypted.txt", ciphertext)
print("加密成功,结果保存在", filename[:-4] + "_encrypted.txt")
elif filename.endswith("_encrypted.txt"):
# 解密
plaintext = decrypt(content, key)
write_file(filename[:-14] + "_decrypted.txt", plaintext)
print("解密成功,结果保存在", filename[:-14] + "_decrypted.txt")
else:
print("文件格式不正确,必须是txt文件或_encrypted.txt文件")
if __name__ == '__main__':
main()
```
在使用该程序时,可以将明文文件放在程序所在目录,并命名为`plaintext.txt`,然后运行程序进行加密;也可以将密文文件放在程序所在目录,并命名为`ciphertext_encrypted.txt`,然后运行程序进行解密。