4.某加密算法要求对输入的小写英文字符串(明文) 做如下处理: 按照英文字母“”"”...“”的排列序,将字符串中的每个字符都取其前一个字 停要组得到富文(共中规定字符"”的前一个字村取“2"》 例如,明文“Sc加密后的密文是“rstcdms”。请编写计算机程序实现该加密算法。
时间: 2023-10-05 20:04:21 浏览: 191
以下是Python实现该加密算法的代码:
```python
plain_text = input("请输入小写英文字符串:")
cipher_text = ""
for char in plain_text:
if char == 'a':
cipher_text += 'z'
else:
cipher_text += chr(ord(char) - 1)
print("加密后的密文为:", cipher_text)
```
运行程序后,输入需要加密的小写英文字符串,程序将会输出其加密后的密文。例如,输入`hello`,程序将会输出`gdkkn`作为密文。
相关问题
任务描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用替换方法将信息中的每一个英文字符循环替换为字母表序列中该字符后面的第3个字符,字母表的对应关系如下: 明文: abcdefghijklmnopqrstuvwxyz 密文: defghijklmnopqrstuvwxyzabc 编程要求 假设用户可能使用的输入仅包含小写字母a-z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,其中空格不用进行加密处理,输出加密之后的结果。 测试说明 测试输入:hello python world 预期输出:khoor sbwkrq zruog
以下是Python3实现的凯撒密码加密程序:
```python
plain_text = input()
encrypted_text = ""
for c in plain_text:
if c == " ":
encrypted_text += " "
else:
encrypted_text += chr((ord(c) - ord('a') + 3) % 26 + ord('a'))
print(encrypted_text)
```
程序首先读入原始明文,然后遍历明文中的每个字符。如果字符是空格,则直接添加到密文中;否则,将其转换为密文中对应的字符并添加到密文中。
具体转换方法是:将字符的ASCII码减去小写字母a的ASCII码,得到该字符在字母表中的序号;再加上3,相当于将明文字母表中的位置向后移动3位;最后将结果对26取模,相当于将Z后面的三个字符循环回到A、B、C,得到密文字母表中的位置;再加上小写字母a的ASCII码,得到该位置上对应的密文字母。
编写函数,实现凯撒加密算法,从键盘输入字符串(明文)和秘钥k,输出加密后的字符串,其中k为每个英文字母在字母表中后面的第k个字母,字母表首尾循环相接。
好的,以下是实现凯撒加密算法的 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 码表值转换为字符时,需要加上相应的起始位置,以便得到正确的字符。
阅读全文