凯撒密码实现文件加密python编程
时间: 2024-09-30 12:10:09 浏览: 36
凯撒密码是一种简单的替换式加密技术,在Python中实现文件加密可以按照以下步骤进行:
1. **导入必要的库**:
首先,我们需要导入`os`和`string`库,前者用于处理文件路径,后者提供常用的字符集。
```python
import os
import string
```
2. **定义加密函数**:
函数接受明文字符串、密钥(偏移量)以及选择的字符集(通常使用ASCII字母)。对于每个字符,将其移动指定的偏移量。
```python
def caesar_cipher_encrypt(text, shift, charset=string.ascii_letters):
encrypted_text = ""
for char in text:
if char.isalpha():
is_upper = char.isupper()
shifted_char = chr(((ord(char) - ord('A') + shift) % 26) + ord('A')) if is_upper else chr(((ord(char) - ord('a') + shift) % 26) + ord('a'))
encrypted_text += shifted_char
else:
encrypted_text += char
return encrypted_text
```
3. **读取和加密文件内容**:
使用`open()`函数打开文件,然后读取内容,并调用加密函数。
```python
def encrypt_file(input_file_path, output_file_path, shift):
with open(input_file_path, 'r') as input_file:
file_content = input_file.read()
encrypted_content = caesar_cipher_encrypt(file_content, shift)
with open(output_file_path, 'w') as output_file:
output_file.write(encrypted_content)
# 示例使用
input_file = "example.txt"
output_file = "encrypted_example.txt"
shift = 3 # 可选的偏移量,例如3表示右移三个位置
encrypt_file(input_file, output_file, shift)
```
4. **解密过程类似,只需将偏移量取反即可**。
```python
def caesar_cipher_decrypt(ciphertext, shift, charset=string.ascii_letters):
decrypted_text = ""
for char in ciphertext:
if char.isalpha():
is_upper = char.isupper()
decrypted_char = chr(((ord(char) - ord('A') - shift) % 26) + ord('A')) if is_upper else chr(((ord(char) - shift) % 26) + ord('a'))
decrypted_text += decrypted_char
else:
decrypted_text += char
return decrypted_text
# 解密示例
decrypted_content = caesar_cipher_decrypt(encrypted_content, shift)
```
阅读全文