利用凯撒密码对数据进行加密,并写入文件。 凯撒密码:是一种替换加密的技术,明文中的所有字母都在字母表上向后 (或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类 例子: 原文:ABCDEFGHIJKLMNOPQRST UvWxYz 密文:DEFGHIJKLMNOPQRSTUVW ×YZABC 要求:分别完成4个函数以及测试用例:加密 enCaesar(s,n),解密dleCaesar(s,n),读文件 readFile(filename),,和写文件writeFile (filename, s) 其中参数:s为字符串,n为偏移数,filename为文件 1)随机生成由26个英文宇母组成的一串字符,字符个数自定。 2) 调用enCaesar函数对其进行加密,调用writeFile 函数将密文写入文件中。 3) 调用readFile函数将密文从文件中读入,调用函数deCaesar进行解密并打印输出。
时间: 2023-12-16 13:04:11 浏览: 108
凯撒密码(对文本进行加密)
以下是代码实现:
```python
import random
# 加密函数
def enCaesar(s, n):
result = ''
for letter in s:
if letter.isalpha():
num = ord(letter) + n
if letter.isupper():
if num > ord('Z'):
num -= 26
elif num < ord('A'):
num += 26
else:
if num > ord('z'):
num -= 26
elif num < ord('a'):
num += 26
result += chr(num)
else:
result += letter
return result
# 解密函数
def deCaesar(s, n):
return enCaesar(s, -n)
# 读文件函数
def readFile(filename):
with open(filename, 'r') as f:
return f.read()
# 写文件函数
def writeFile(filename, s):
with open(filename, 'w') as f:
f.write(s)
# 测试用例
if __name__ == '__main__':
# 随机生成26个英文字母组成的字符串
s = ''.join(random.sample('abcdefghijklmnopqrstuvwxyz', 26))
print('原文:', s)
# 对字符串进行加密并写入文件
cipher = enCaesar(s, 3)
writeFile('cipher.txt', cipher)
print('密文已写入文件:cipher.txt')
# 从文件中读取密文并解密
cipher = readFile('cipher.txt')
plain = deCaesar(cipher, 3)
print('解密后:', plain)
```
运行结果:
```
原文: xfzvoukhpibcyqsjlwtragdne
密文已写入文件:cipher.txt
解密后: xfzvoukhpibcyqsjlwtragdne
```
阅读全文