编写函数,实现凯撒加密算法,从键盘输入字符串(明文)和秘钥k,输出加密后的字符串,其中k为每个英文字母在字母表中后面的第k个字母,字母表首尾循环相接。
时间: 2024-03-11 11:51:02 浏览: 23
好的,以下是实现凯撒加密算法的 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(s,k),参数s表示明文字符串,k表示移动位数,计算并返回凯撒加密后的密文字符串。并输出
好的,我可以编写一个Caesar函数来实现凯撒加密。以下是函数的代码:
```python
def Caesar(s, k):
ciphertext = ''
for c in s:
if c.isalpha():
# 将字母转换成数字,A对应0,a对应26,其余类推
num = ord(c.lower()) - ord('a')
# 加上移动位数
num = (num + k) % 26
# 转换回字母
ciphertext += chr(num + ord('a'))
else:
# 非字母字符保持不变
ciphertext += c
return ciphertext
```
这个函数的思路是遍历输入的明文字符串中的每个字符。如果是字母,就将字母转换成数字,加上移动位数后再转换回字母。如果是非字母字符,就原样输出。最后返回加密后的密文字符串。调用函数的方式如下:
```python
plaintext = "Hello, World!"
k = 3
ciphertext = Caesar(plaintext, k)
print("明文: %s" % plaintext)
print("密文: %s" % ciphertext)
```
运行结果如下:
```
明文: Hello, World!
密文: khoor, zruog!
```
请注意,这个加密方法并不是特别安全,因为凯撒加密的密钥空间很小,容易被暴力破解。实际使用时应该采用更加安全的加密算法。