仿射密码python
时间: 2023-07-26 08:06:09 浏览: 107
以下是一个简单的 Python 代码示例,用于加密和解密仿射密码:
```python
import string
# 定义仿射密码加密函数
def affine_encrypt(text, key):
result = ""
for char in text:
if char in string.ascii_lowercase:
index = (key[0] * (ord(char) - 97) + key[1]) % 26
result += chr(index + 97)
elif char in string.ascii_uppercase:
index = (key[0] * (ord(char) - 65) + key[1]) % 26
result += chr(index + 65)
else:
result += char
return result
# 定义仿射密码解密函数
def affine_decrypt(cipher, key):
result = ""
mod_inverse = 0
for i in range(26):
temp = (key[0] * i) % 26
if temp == 1:
mod_inverse = i
break
for char in cipher:
if char in string.ascii_lowercase:
index = mod_inverse * (ord(char) - 97 - key[1] + 26) % 26
result += chr(index + 97)
elif char in string.ascii_uppercase:
index = mod_inverse * (ord(char) - 65 - key[1] + 26) % 26
result += chr(index + 65)
else:
result += char
return result
# 测试代码
text = "hello world"
key = (3, 5)
cipher = affine_encrypt(text, key)
print("Cipher Text: ", cipher)
plain = affine_decrypt(cipher, key)
print("Plain Text: ", plain)
```
在这个示例中,我们使用了 `string` 模块中的 `ascii_lowercase` 和 `ascii_uppercase` 常量,来检查给定的字符是否为小写或大写字母。
我们定义了两个函数:`affine_encrypt` 和 `affine_decrypt`,分别用于加密和解密文本。两个函数都接受一个字符串文本和一个包含两个整数的键作为输入。
我们使用 `ord()` 函数将每个字符转换为其 ASCII 码,并使用 `chr()` 函数将其转换回字符。我们还使用了模数运算符 `%` 来确保结果在 26 个字母之间循环。
阅读全文