DES just saddens me. The given code encrypts a message with two different keys, then performs one of the ugliest encodings I've ever seen. Fortunately it's not nearly as annoying to decode: - Split it into even chunks (use `getNibbleLength`to find the exact width) - Convert the chunk into a number - Subtract the offset - Convert from hex to binary That leaves the decryption part. The construction doesn't appear to have any of the crypto-independent faults, however the organizers were nice enough to drop a hint about weak keys being used. There aren't that many of them, so it's possible to try every possible combination on the example ciphertext and check whether the decryption matches up with the plaintext. Once the right keys have been found, they can be used to decrypt the text containing the flag. > [...] Unendlich die auf hellroten kreiselnd kellnerin schonsten. Um > du mischen schurze melodie ei geschah. Was froh ihn als wach wie > sehr tief. Abwarts brachte mu stillen lacheln nachdem la te. Des > schuttelte drechslers stockwerke ehe hausdacher. Sich auch zu ei > dies chen sa he gern. <> Am knopf > viere sa es essen te. [...]