经典密码学仿射密码的代码
时间: 2024-05-06 10:12:35 浏览: 139
Python实现仿射密码
5星 · 资源好评率100%
经典密码学中的仿射密码是一种替换密码,它使用了一种线性变换的方法对明文进行加密。下面是一个简单的仿射密码的加密和解密的Python代码示例:
```python
def affine_encrypt(plain_text, key):
encrypted_text = ""
for char in plain_text:
if char.isalpha():
if char.isupper():
encrypted_text += chr((ord(char) - 65) * key[0] + key[1] % 26 + 65)
else:
encrypted_text += chr((ord(char) - 97) * key[0] + key[1] % 26 + 97)
else:
encrypted_text += char
return encrypted_text
def affine_decrypt(cipher_text, key):
decrypted_text = ""
for char in cipher_text:
if char.isalpha():
if char.isupper():
decrypted_text += chr(((ord(char) - 65 - key[1]) * mod_inverse(key[0], 26)) % 26 + 65)
else:
decrypted_text += chr(((ord(char) - 97 - key[1]) * mod_inverse(key[0], 26)) % 26 + 97)
else:
decrypted_text += char
return decrypted_text
def mod_inverse(a, m):
for x in range(1, m):
if (a * x) % m == 1:
return x
return -1
# 示例使用
plain_text = "Hello, World!"
key = (5, 8) # 仿射密码的密钥,其中key[0]为乘法因子,key[1]为加法因子
encrypted_text = affine_encrypt(plain_text, key)
decrypted_text = affine_decrypt(encrypted_text, key)
print("明文:", plain_text)
print("加密后:", encrypted_text)
print("解密后:", decrypted_text)
```
请注意,上述代码仅为示例,实际使用中需要考虑更多的安全性和错误处理。另外,仿射密码是一种较为简单的密码算法,现代密码学中已经有更加安全的替代算法。
阅读全文