以上程序基础上实现加密解密
时间: 2023-08-26 13:03:47 浏览: 48
好的,以下是在上面的程序基础上实现加密解密的示例代码:
```python
def encrypt(plaintext, key):
"""
凯撒密码加密函数
"""
ciphertext = ""
for i in plaintext:
# 判断字符是否为大写字母
if i.isupper():
ciphertext += chr((ord(i) - 65 + key) % 26 + 65)
# 判断字符是否为小写字母
elif i.islower():
ciphertext += chr((ord(i) - 97 + key) % 26 + 97)
# 非字母字符不做处理
else:
ciphertext += i
return ciphertext
def decrypt(ciphertext, key):
"""
凯撒密码解密函数
"""
plaintext = ""
for i in ciphertext:
# 判断字符是否为大写字母
if i.isupper():
plaintext += chr((ord(i) - 65 - key + 26) % 26 + 65)
# 判断字符是否为小写字母
elif i.islower():
plaintext += chr((ord(i) - 97 - key + 26) % 26 + 97)
# 非字母字符不做处理
else:
plaintext += i
return plaintext
# 主程序
plaintext = input("请输入明文:")
key = 3 # 向后偏移3位
ciphertext = encrypt(plaintext, key)
print("加密后的密文为:", ciphertext)
decrypted_plaintext = decrypt(ciphertext, key)
print("解密后的明文为:", decrypted_plaintext)
```
解释一下上面的代码:
1. 首先定义了两个函数 `encrypt()` 和 `decrypt()`,分别用于加密和解密。
2. `encrypt()` 函数实现的加密过程与之前的示例代码相同,不再赘述。
3. `decrypt()` 函数实现的解密过程与加密过程基本相反,只是将密钥取反即可。具体实现方式是将加密过程中的密钥加上 26 再取反,这样可以保证即使密钥为 0,也能正确解密。
4. 在主程序中,首先获取用户输入的明文,然后将密钥 `key` 的值设置为 3,这样就可以实现向后偏移3位字母的效果。
5. 使用 `encrypt()` 函数加密明文,得到密文后输出。
6. 使用 `decrypt()` 函数解密密文,得到明文后输出。
希望这个示例代码也能对你有所帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)