凯撒密码python作业
时间: 2023-10-14 07:06:43 浏览: 86
以下是一个简单的凯撒密码 Python 程序:
```python
def caesar_cipher(text, shift):
cipher = ""
for char in text:
if char.isalpha():
cipher += chr((ord(char) + shift - 65) % 26 + 65)
else:
cipher += char
return cipher
text = input("请输入明文:")
shift = int(input("请输入偏移量:"))
print("凯撒密码加密结果:", caesar_cipher(text, shift))
```
这个程序会提示用户输入需要加密的明文和偏移量,然后输出加密后的密文。
程序的核心是 `caesar_cipher()` 函数,它接受两个参数:需要加密的明文和偏移量。函数会遍历明文中的每个字符,对于字母字符,将它的 ASCII 码加上偏移量,再对 26 取模,最后加上 65(即大写字母 A 的 ASCII 码)得到密文中对应的 ASCII 码。对于非字母字符,直接将它添加到密文中。最后返回密文。
注意,这个程序只支持大写字母的加密,如果需要支持小写字母和其他符号,需要进行相应的修改。
相关问题
凯撒密码python作业实例
凯撒密码是一种简单的替换加密技术,它通过将字母表中的每个字符向后移动固定位数来进行编码。在Python中,我们可以很容易地实现这个过程。下面是一个基本的凯撒密码的实例作业:
```python
def caesar_cipher(text, shift):
encrypted_text = ""
for char in text:
if char.isalpha(): # 检查字符是否为字母
shift_amount = shift % 26 # 对于大写字母,shift可能超过26,所以取余
new_char_code = ord(char.lower()) + shift_amount # 转换成ASCII码后加移位
if char.islower():
encrypted_text += chr(new_char_code)
else: # 如果是大写字母,区分大小写处理
encrypted_text += chr((new_char_code - ord('a') + 26) % 26 + ord('A'))
else:
encrypted_text += char # 非字母字符保持不变
return encrypted_text
# 示例
plaintext = "Hello, World!"
shift = 3
encrypted_text = caesar_cipher(plaintext, shift)
print(f"原文: {plaintext}")
print(f"密文: {encrypted_text}")
# 解密示例
decrypted_text = caesar_cipher(encrypted_text, -shift) # 移位相反即可解密
print(f"解密文: {decrypted_text}")
```
在这个例子中,`caesar_cipher`函数接受两个参数:原始文本(`text`)和位移量(`shift`)。然后遍历文本中的每个字符,如果是字母,则按照指定的位移进行替换;如果不是字母,则原样保留。
头歌python实训作业答案while循坏实现凯撒加密
以下是Python实现凯撒加密的代码,使用了while循环:
```python
def caesar_cipher(plaintext, shift):
ciphertext = ""
i = 0
while i < len(plaintext):
char = plaintext[i]
if char.isalpha():
# Determine the position of the character in the alphabet
if char.isupper():
pos = ord(char) - ord('A')
else:
pos = ord(char) - ord('a')
# Apply the shift and handle wrapping around the alphabet
new_pos = (pos + shift) % 26
if char.isupper():
new_char = chr(new_pos + ord('A'))
else:
new_char = chr(new_pos + ord('a'))
ciphertext += new_char
else:
# Non-alphabetic characters are unchanged
ciphertext += char
i += 1
return ciphertext
```
代码中使用了一个while循环来逐个处理输入的明文中的每个字符,并根据凯撒密码的加密算法进行转换。在循环中,使用了一个计数器i来跟踪处理的字符位置,同时还定义了一个空字符串ciphertext用于存储加密后的密文。在每次循环中,首先提取输入明文中的一个字符,判断它是否为字母,如果是字母,则计算它在字母表中的位置,并应用凯撒密码的加密规则来计算它在密文中的位置;如果不是字母,则直接将该字符添加到密文中。最后,将计数器i递增1,以便处理下一个字符,直到处理完所有输入明文中的字符。
使用该函数可以对明文进行加密,将明文和密钥作为输入,输出加密后的密文。例如:
```python
plaintext = "hello world"
shift = 3
ciphertext = caesar_cipher(plaintext, shift)
print(ciphertext)
```
输出结果为:
```
khoor zruog
```
这是将明文中的每个字母都按照凯撒密码的加密规则向右移动3个位置得到的结果。
阅读全文