feat: 添加凯撒密码实现示例用于教学目的
实现凯撒加密和解密算法,包含用户交互界面
This commit is contained in:
58
classical-encryption/caesar_cipher.py
Normal file
58
classical-encryption/caesar_cipher.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
凯撒加密算法示例
|
||||
一个教学用的凯撒密码实现
|
||||
"""
|
||||
|
||||
def caesar_encrypt(plaintext, shift):
|
||||
"""凯撒加密函数"""
|
||||
ciphertext = ""
|
||||
|
||||
for char in plaintext:
|
||||
if char.isalpha():
|
||||
base = ord('A') if char.isupper() else ord('a')
|
||||
new_char = chr((ord(char) - base + shift) % 26 + base)
|
||||
ciphertext += new_char
|
||||
else:
|
||||
ciphertext += char
|
||||
|
||||
return ciphertext
|
||||
|
||||
def caesar_decrypt(ciphertext, shift):
|
||||
"""凯撒解密函数"""
|
||||
return caesar_encrypt(ciphertext, -shift)
|
||||
|
||||
def main():
|
||||
"""主函数,用户交互界面"""
|
||||
print("凯撒密码示例")
|
||||
|
||||
while True:
|
||||
print("\n1.加密\n2.解密\n3.退出")
|
||||
choice = input("选择: ").strip()
|
||||
|
||||
if choice == "1":
|
||||
text = input("明文: ")
|
||||
try:
|
||||
shift = int(input("移位值: "))
|
||||
result = caesar_encrypt(text, shift)
|
||||
print(f"密文: {result}")
|
||||
except ValueError:
|
||||
print("移位值必须是整数!")
|
||||
|
||||
elif choice == "2":
|
||||
text = input("密文: ")
|
||||
try:
|
||||
shift = int(input("移位值: "))
|
||||
result = caesar_decrypt(text, shift)
|
||||
print(f"明文: {result}")
|
||||
except ValueError:
|
||||
print("移位值必须是整数!")
|
||||
|
||||
elif choice == "3":
|
||||
print("再见!")
|
||||
break
|
||||
else:
|
||||
print("无效选择")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user