用python实现希尔密码加解密,用户自行选择加密还是解密,自行输入明文或者密文,密钥
时间: 2024-01-26 07:01:56 浏览: 133
好的,下面是一个实现希尔密码加解密的 Python 代码,可以让用户自行选择加密还是解密,自行输入明文或者密文以及密钥:
```python
def shift_by_key(char, key_char):
shift = ord(key_char) - 65
return chr((ord(char) + shift) % 26 + 65)
def encrypt(message, key):
encrypted = ""
key_len = len(key)
msg_len = len(message)
for i in range(msg_len):
char = message[i]
key_char = key[i % key_len]
encrypted += shift_by_key(char, key_char)
return encrypted
def decrypt(encrypted, key):
decrypted = ""
key_len = len(key)
msg_len = len(encrypted)
for i in range(msg_len):
char = encrypted[i]
key_char = key[i % key_len]
shift = ord(key_char) - 65
decrypted += chr((ord(char) - shift - 65) % 26 + 65)
return decrypted
# 获取用户输入
action = input("请输入操作(加密/解密):")
message = input("请输入明文或密文:").upper()
key = input("请输入密钥:").upper()
# 执行操作并输出结果
if action == "加密":
encrypted = encrypt(message, key)
print("加密结果为:", encrypted)
elif action == "解密":
decrypted = decrypt(message, key)
print("解密结果为:", decrypted)
else:
print("无效的操作!请重新运行程序。")
```
这个代码实现了用户可以自行选择加密还是解密的功能,同时让用户输入明文或者密文以及密钥。在加密过程中,我们使用 `shift_by_key()` 函数来计算每个字符的偏移量,然后将其加密。在解密过程中,我们使用类似的方法来计算每个字符的偏移量,然后将其解密。需要注意的是,在解密过程中,我们需要将偏移量从加密时的值转换为减去该值的值。
阅读全文