将恺撒加密和解密函数封装在一个类中。 主文件通过实例调用类中的加解密方法实现对字符串的加解密。
时间: 2024-10-09 09:01:32 浏览: 32
php凯撒密码加密和解密---适合加密英文
5星 · 资源好评率100%
在Python中,我们可以将加密和解密的功能封装在一个名为`CaesarCipher`的类中,以便更好地管理和复用。以下是这样的设计:
```python
class CaesarCipher:
def __init__(self, shift=3):
self.shift = shift
def _get_alphabet(self):
return string.ascii_letters + string.digits + string.punctuation + '中文字符'
def encrypt(self, text):
alphabet = self._get_alphabet()
encrypted_text = ''.join(alphabet[(alphabet.index(char) + self.shift) % len(alphabet)] for char in text)
return encrypted_text
def decrypt(self, encrypted_text):
return self.encrypt(encrypted_text, -self.shift)
# 对于中文字符,同样可以添加相应的解密处理
def chinese_decrypt(self, encrypted_text):
if '中文字符' not in self._get_alphabet():
raise ValueError("当前实例未包含中文字符")
decrypted_pinyin = self.decrypt(encrypted_text)
return ''.join(''.join(chr(ord(pinyin) + ord(self.shift) % 256) for pinyin in phrase) for phrase in decrypted_pinyin)
# 主文件中使用示例
cipher = CaesarCipher(key=3)
input_string = "Hello, 世界!"
encrypted = cipher.encrypt(input_string)
print(f"加密后:{encrypted}")
decrypted = cipher.decrypt(encrypted)
print(f"解密后:{decrypted}")
try:
chinese_encrypted = cipher.chinese_encrypt(input_string)
except ValueError as e:
print(e)
# 如果需要,可以创建一个新的实例用于中文字符加密
chinese_cipher = CaesarCipher(key=3, include_chinese=True)
chinese_encrypted = chinese_cipher.chinese_encrypt(input_string)
print(f"中文加密后:{chinese_encrypted}")
chinese_decrypted = chinese_cipher.chinese_decrypt(chinese_encrypted)
print(f"中文解密后:{chinese_decrypted}")
```
在这个设计中,用户可以通过创建`CaesarCipher`类的实例,并通过该实例调用`encrypt`、`decrypt`或`chinese_decrypt`方法来进行加解密操作。这样使得代码更整洁,也方便了后续维护和扩展。
阅读全文