用Python写一个凯撒密码
时间: 2023-04-01 22:01:17 浏览: 144
凯撒密码是一种简单的加密方法,可以通过将明文中的每个字母按照一定的偏移量进行替换来得到密文。以下是用 Python 实现凯撒密码的代码:
```python
def caesar_cipher(text, shift):
result = ""
for char in text:
if char.isalpha():
if char.isupper():
result += chr((ord(char) + shift - 65) % 26 + 65)
else:
result += chr((ord(char) + shift - 97) % 26 + 97)
else:
result += char
return result
```
其中,`text` 是要加密的明文,`shift` 是偏移量。这个函数会返回加密后的密文。
例如,如果要将明文 `"hello, world!"` 用偏移量为 3 的凯撒密码进行加密,可以这样调用函数:
```python
cipher_text = caesar_cipher("hello, world!", 3)
print(cipher_text) # "khoor, zruog!"
```
这样就得到了密文 `"khoor, zruog!"`。
相关问题
用python编写一个凯撒密码加密算法
好的,以下是用 Python 编写的凯撒密码加密算法示例:
```python
def caesar_encrypt(plain_text, shift):
"""凯撒密码加密函数"""
cipher_text = ""
for char in plain_text:
if char.isalpha():
# 对字母进行加密
ascii_code = ord(char) + shift
if char.isupper():
if ascii_code > ord('Z'):
ascii_code -= 26
elif ascii_code < ord('A'):
ascii_code += 26
else:
if ascii_code > ord('z'):
ascii_code -= 26
elif ascii_code < ord('a'):
ascii_code += 26
cipher_text += chr(ascii_code)
else:
# 非字母字符直接添加到密文中
cipher_text += char
return cipher_text
```
这个函数接收两个参数,第一个参数 plain_text 是要加密的明文,第二个参数 shift 是加密时的位移量。函数会遍历明文中的每个字符,对字母进行加密,非字母字符则直接添加到密文中。字母加密时会根据大小写分别处理,并根据位移量进行加密。
下面是一个示例,使用该函数进行加密:
```python
plain_text = "hello, world!"
shift = 3
cipher_text = caesar_encrypt(plain_text, shift)
print(cipher_text)
```
输出结果为:
```
khoor, zruog!
```
用python做一个凯撒密码解密程序
凯撒密码是一种简单的替换加密方法,通过将明文中的每个字母按照固定的位移进行替换来达到加密的目的。下面是一个简单的Python程序,用于解密凯撒密码:
```python
def caesar_cipher_decrypt(ciphertext, shift):
plaintext = ""
for char in ciphertext:
if char.isalpha():
# 对大写字母和小写字母分别处理
shift_amount = shift % 26
if char.islower():
new_char = chr(((ord(char) - ord('a') - shift_amount) % 26) + ord('a'))
else:
new_char = chr(((ord(char) - ord('A') - shift_amount) % 26) + ord('A'))
plaintext += new_char
else:
plaintext += char # 非字母字符保持原样
return plaintext
# 示例用法
ciphertext = "Khoor, Zruog!"
shift = 3 # 假设加密位移为3 (实际可根据需要调整)
decrypted_text = caesar_cipher_decrypt(ciphertext, shift)
print(f"原始文本: {decrypted_text}")
```
在这个程序中,`caesar_cipher_decrypt`函数接收两个参数:密文(`ciphertext`)和偏移量(`shift`)。它遍历密文中的每个字符,如果是字母,则根据ASCII码进行相应的位移并转换回对应的字母;如果不是字母,则直接保留不变。
阅读全文