diff --git a/classical-encryption/caesar_cipher.py b/classical-encryption/caesar_cipher.py new file mode 100644 index 0000000..0813968 --- /dev/null +++ b/classical-encryption/caesar_cipher.py @@ -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() \ No newline at end of file