古典密码学实验(仿射密码)代码
时间: 2024-10-14 10:16:11 浏览: 54
古典密码学中的仿射密码是一种简单的替换式密码,它通过线性变换将明文字符映射到密文字符。这种密码通常使用两个固定数字a和b来进行计算,加密过程可以用下面这个公式表示:
\[ C = (M + a) \mod 26 \]
其中,\( M \) 是明文字母对应的ASCII码减去65(A的ASCII码),\( C \) 是加密后的密文字母的ASCII码。
以下是使用Python编写的一个简单仿射密码加密和解密的示例代码:
```python
def encrypt(plaintext, a, b):
ciphertext = ""
for char in plaintext:
if char.isalpha(): # 只处理字母,忽略其他字符
shift = (ord(char.lower()) - ord('a') + a) % 26
ciphertext += chr((ord(char.lower()) - ord('a') + shift) % 26 + ord('a'))
else:
ciphertext += char
return ciphertext
def decrypt(ciphertext, a, b):
plaintext = ""
for char in ciphertext:
if char.isalpha():
inverse_shift = (26 - a) % 26 # 密钥a的逆元
plaintext += chr(((ord(char.lower()) - ord('a') - inverse_shift) % 26) + ord('a'))
else:
plaintext += char
return plaintext
# 示例使用
message = "Hello, World!"
key_a = 3
key_b = 5
encrypted = encrypt(message, key_a, key_b)
print(f"Encrypted message: {encrypted}")
decrypted = decrypt(encrypted, key_a, key_b)
print(f"Decrypted message: {decrypted}")
```
在这个例子中,你可以调整`key_a`和`key_b`来创建不同的加密效果。请注意,由于仿射密码并不复杂,现代密码系统一般不会使用它,因为它很容易破解。
阅读全文