def affine_decrypt(ciphertext, a, b):
plaintext = "" # 存储解密后的明文
a_inverse = 0 # a的乘法逆元
for i in range(26):
if (a * i) % 26 == 1: # 寻找a的乘法逆元
a_inverse = i
break
for char in ciphertext: # 遍历密文中的每个字符
if char.isalpha(): # 判断字符是否为字母
letter_value = ord(char.lower()) - ord('a') # 将字母转换为对应的数值(0-25)
decrypted_letter = chr((a_inverse * (letter_value - b)) % 26 + ord('a')) # 解密字母
if char.isupper(): # 如果原字母是大写,解密后也为大写
decrypted_letter = decrypted_letter.upper()
plaintext += decrypted_letter # 将解密后的字母添加到明文中
else:
plaintext += char # 非字母字符直接添加到明文中
return plaintext
ciphertext = "eyjd{4e71wf_H1uc3s_15_EEEEpwwl!!}" # 密文
a = 25 # 加密时使用的参数a
b = 9 # 加密时使用的参数b
# 解密
plaintext = affine_decrypt(ciphertext, a, b)
print("Plaintext:", plaintext) # 输出解密后的明文 27
2023
07
仿射在线解码
作者:tangzhu | 分类:网络安全 | 浏览:344 | 评论:0