编写函数,实现凯撒加密算法,从键盘输入字符串(明文)和秘钥k,输出加密后的字符串,其中k为每个英文字母在字母表中后面的第k个字母,字母表首尾循环相接。
时间: 2024-03-11 15:51:02 浏览: 169
好的,以下是实现凯撒加密算法的 Python 函数:
```python
def caesar_encrypt(plain_text, k):
cipher_text = ""
for char in plain_text:
if char.isalpha():
base = 65 if char.isupper() else 97
cipher_text += chr((ord(char) - base + k) % 26 + base)
else:
cipher_text += char
return cipher_text
```
函数接受两个参数,分别是明文和秘钥k。在循环中,我们逐个遍历明文中的字符,如果是英文字母,就计算出其加密后的字符,并将其添加到密文中。如果不是英文字母,就直接将其添加到密文中。最后,返回加密后的密文。
注意,上面代码中的 `65` 和 `97` 分别表示大写字母和小写字母在 ASCII 码表中的起始位置。在计算加密后的字符时,我们需要根据原字符的大小写来选择相应的起始位置。同时,将加密后的字符的 ASCII 码表值转换为字符时,需要加上相应的起始位置,以便得到正确的字符。
相关问题
用python:编写函数,实现凯撒加密算法,从键盘输入字符串(明文)和秘钥k,输出加密后的字符串,其中k为每个英文字母在字母表中后面的第k个字母,字母表首尾循环相接。
可以使用以下代码实现凯撒加密算法:
```python
def caesar_cipher(text, key):
"""实现凯撒加密算法"""
encrypted_text = ""
for char in text:
if char.isalpha():
# 将字母转换为ASCII码并进行加密操作
encrypted_char = chr((ord(char) - 65 + key) % 26 + 65)
else:
encrypted_char = char
encrypted_text += encrypted_char
return encrypted_text
```
其中,`text`为输入的明文字符串,`key`为秘钥,表示每个英文字母在字母表中后面的第k个字母。该函数首先遍历输入的明文字符串中的每个字符,如果是字母则进行加密操作,否则直接添加到加密后的字符串中。加密操作分为以下几步:
1. 将字母转换为ASCII码,减去65后得到该字母在字母表中的位置;
2. 加上秘钥k;
3. 对26取模,得到加密后字母在字母表中的位置;
4. 再加上65,将加密后字母的ASCII码转换为字母。
最后返回加密后的字符串。
实现一个凯撒密码算法(Caesar cipher),要求输入一个数字作为秘钥K,对输入的任意字符串(暂时只考虑英文字符和数字)可以输出凯撒密码算法加密的密文
好的,对于您的问题,我可以回答。凯撒密码是一种简单的替换密码算法,其中每个字母在字母表上被向右或向左移动固定数量的位置。我们可以通过将字母表中的字母向右或向左移动K个位置来加密消息。
以下是一个简单的凯撒密码加密算法的Python代码示例:
```
def encrypt_caesar(plaintext, key):
ciphertext = ""
for char in plaintext:
if char.isalpha():
if char.isupper():
ciphertext += chr((ord(char) - 65 + key) % 26 + 65)
else:
ciphertext += chr((ord(char) - 97 + key) % 26 + 97)
elif char.isdigit():
ciphertext += str((int(char) + key) % 10)
else:
ciphertext += char
return ciphertext
```
在这个例子中,`encrypt_caesar`函数接受两个参数:明文和密钥,然后返回密文。这个函数使用了Python的内置函数`ord`和`chr`来处理ASCII码,以及`isalpha`和`isdigit`函数来判断字符是否是字母或数字。最后将移动后的字符拼接起来形成密文。
希望这可以帮到您。
阅读全文