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