27
2023
07

仿射在线解码

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)  # 输出解密后的明文
« 上一篇 下一篇 »