请求解码标志的帮助

问题描述 投票:0回答:1

我目前正在应对解码挑战,需要一些帮助。我试图破译的加密字符串如下:

TTZK{Xrzlj_Alczlj_Trvjri}

我观察到加密文本中大括号 {} 和下划线 _ 的存在似乎是有指示性的。此外,密码的初始部分似乎对应于单词“flag”。

鉴于挑战被命名为“SPIN AROVND”,我们可能需要使用凯撒密码似乎是合理的。

我愿意接受任何可以帮助我破译这个标志的建议或方法。

非常感谢您的协助!

    def inrange(n, range_min, range_max):
        range_len = range_max - range_min + 1
        a = n % range_len
            if a < range_len:
            a += range_len
            return a

    def caesar_shift(c, shift):
        ascii = ord(c)
        a = ascii + shift
        a = inrange(a, 32, 126)
        return chr(a)

    def caesar_cipher(plaintext, shift):
        ciphertext = ''
        for c in plaintext:
            ciphertext += caesar_shift(c, shift)
        return ciphertext

    def try_all_shifts(plaintext):
        for shift in range(1, 26):
            ciphertext = caesar_cipher(plaintext, shift)
            print(f"Shift {shift}: {ciphertext}")

    plaintext = 'TTZKXrzljAlczljTrvjri'
    try_all_shifts(plaintext)``

提供的代码返回的结果看起来毫无意义,这让我怀疑它是否确实是使用凯撒方法加密的。然而,由于缺乏具体线索,我的方法目前是推测性的。

python encryption caesar-cipher
1个回答
0
投票

修改后的代码:

def inrange(n, range_min, range_max):
    range_len = range_max - range_min + 1
    a = n % range_len
    if a < range_min:
        a += range_len
    return a

def caesar_shift(c, shift):
    ascii_val = ord(c)
    if 'A' <= c <= 'Z':
        return chr(inrange(ascii_val + shift - ord('A'), ord('A'), ord('Z')))
    elif 'a' <= c <= 'z':
        return chr(inrange(ascii_val + shift - ord('a'), ord('a'), ord('z')))
    else:
        return c

def calculate_shift(initial, target):
    return (ord(target) - ord(initial)) % 26

def try_all_shifts(plaintext):
    calculated_shift = calculate_shift('F', plaintext[0])
    for shift in range(calculated_shift, calculated_shift + 26):
        ciphertext = ''.join(caesar_shift(c, shift) for c in plaintext)
        print(f"Shift {shift % 26}: {ciphertext}")

plaintext = 'TTZKXrzljAlczljTrvjri'
try_all_shifts(plaintext)
© www.soinside.com 2019 - 2024. All rights reserved.