Skip to main content
The National Cipher Challenge

Challenge 10B

A Tale of 2 Secrets Forums T.E.M.P.E.S.T. Challenge 10B

Viewing 15 posts - 211 through 225 (of 268 total)
  • Author
    Posts
  • #115038
    Chinchinchilla
    Participant

    Happy new year to all with a joke:

    Why did the cryptologist get disqualified from the cipher challenge?

    He didn’t PlayFair!

    #115040
    NotAidan
    Participant

    Is there a name for this cipher or is it custom, i cant find anything online for this cipher of 10b i just got correct finally

    #115041
    Crackerjack_404
    Participant

    @NotAiden

    You could call it a modified four-square cipher

    Surely, in this case, a four-quadrilateral cipher? Harry

    #115042
    F6EXB_the_frenchy
    Participant

    4squares 2.0?

    #115043
    Un_Poisson_Rouge_et_Orange_et_Jaune
    Participant

    @NotAidan it is a variation of the four square cipher.

    #115044
    5hrey
    Participant

    Rectangles might be my least favourite shape now. Honestly have no clue how you were meant to get 10B without the casefiles!

    And yet …. Harry

    #115046
    _madness_
    Participant

    There needs to be an eight-cube cipher that encrypts trigrams.

    Paging Félix Delastelle …. Harry

    #114999
    P8S_EH
    Participant

    I finish this challenge with a full heart from the elation of a correct submission. It had been a shadow over me during Christmas, but now it’s done I’m happy.

    Harry, feel free to block or withhold this. 😉

    #114952
    ILL
    Participant

    [Thank you for the push in the right direction and happy to say we finally got it! Can I ask you post this late enough so that you don’t have have to sensor it]

    For those who are still stuck, and sadly did not solve it. You still deserve a pat on the back for getting this far, and you should take the time to look back at all the other ciphers of quite high difficulty you managed to solve.

    If you wanted to know the coding approach to solving the cipher you can gaze upon my Frankenstein of Python code. Definitely not the most streamlined solution, but I knew as soon as I could begin thinking of what the plaintext would be the keywords would fall into place in the 4×6 and 6×4 grids:

    cards_6x6 = [
        ["AC", "2C", "3C", "4C", "5C", "6C"],
        ["7C", "8C", "9C", "XC", "JC", "QC"],
        ["KC", "AD", "2D", "3D", "4D", "5D"],
        ["6D", "7D", "8D", "9D", "XD", "JD"],
        ["QD", "KD", "AH", "2H", "3H", "4H"],
        ["5H", "6H", "7H", "8H", "9H", "XH"],
    ]
    
    cards_4x4 = [
        ["JH", "QH", "KH", "AS"],
        ["2S", "3S", "4S", "5S"],
        ["6S", "7S", "8S", "9S"],
        ["XS", "JS", "QS", "KS"],
    ]
    
    letters_6x4 = [
        ["s", "h", "a", "d", "o", "w"],
        ["b", "c", "e", "f", "g", "i"],
        ["k", "l", "m", "n", "p", "q"],
        ["r", "t", "u", "v", "x", "y"],
    ]
    
    letters_4x6 = [
        ["f", "u", "l", "h"],
        ["e", "a", "r", "t"],
        ["b", "c", "d", "g"],
        ["i", "k", "m", "n"],
        ["o", "p", "q", "s"],
        ["v", "w", "x", "y"],
    ]
    
    def index_grid(grid):
        pos = {}
        for r, row in enumerate(grid):
            for c, val in enumerate(row):
                pos[val] = (r, c)
        return pos
    
    pos_6x6 = index_grid(cards_6x6)
    pos_4x4 = index_grid(cards_4x4)
    pos_4x6 = index_grid(letters_4x6)
    pos_6x4 = index_grid(letters_6x4)
    
    pair_to_letters = {}
    
    for c1 in pos_6x6:
        r1, col1 = pos_6x6[c1]
    
        for c2 in pos_4x4:
            r2, col2 = pos_4x4[c2]
    
            l1 = letters_6x4[r2][col1]
    
            l2 = letters_4x6[r1][col2]
    
            pair_to_letters[(c1, c2)] = f"{l1} {l2}"
    
    def decode_full_text(text):
        output = []
        cards = text.split()
        if len(cards) % 2 != 0:
            raise ValueError("Ciphertext should have an even number of cards")
        
        for i in range(0, len(cards), 2):
            c1, c2 = cards[i], cards[i+1]
            output.append(pair_to_letters[(c1, c2)])
        
        return " ".join(output)
    
    ciphertext = (
        "..."
    )
    
    print(decode_full_text(ciphertext))
    #115047
    Crackerjack_404
    Participant

    I’m now mildly concerned this is going to evolve into a ‘pick your favourite shape and dimension, then encrypt accordingly’… Given Trifid already exists, I’m sure we can come up with some cursed dodecahedral cipher involving mapping n-grams to vertices and moving across faces according to some arcane rule

    Ah, now you’re talking! Let’s assume the rule arises from a hyperbolic face pairing just make things interesting! Harry

    #115048
    BobD
    Participant

    Controversial Statement?
    It is so much more transparent, and self-documenting, if implemented using a spreadsheet!
    Could this launch a discussion?

    #115050
    Chinchinchilla
    Participant

    Every time I keep coding a decryption of the ciphertext via Python, I seem to have similar code to others but my code outputs that my ciphertext does not have an even number of characters, and my code has been outputting that for 7 days now. Does anyone know why even though I know that the ciphertext has 6644 characters?

    Is it counting from 0 instead of 1? Harry

    #115054
    tahausman
    Participant

    sir its giving me errors 🙁

    Not sure you can blame “it” for you errors! Harry

    #115060
    Crackerjack_404
    Participant

    @Chinchinchilla

    Are you checking the length of the raw string, or the length of the list after splitting into digraphs? Could you share the line of code you’re using to count the characters? It’s a bit hard to tell what’s going on.

    #115064
    NotAidan
    Participant

    In my code i split the cipher text into bigrams, not sure if that would help

Viewing 15 posts - 211 through 225 (of 268 total)
  • You must be logged in to reply to this topic.
Report a problem