Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for ADFGVX Cipher by kalauroma7997
LETTERS = 'ADFGVX'
def encode(message, secret_alphabet, keyword):
keyword = ''.join(dict.fromkeys(keyword))
message = ''.join(a for a in message if a.isalnum()).lower()
convertedM = ''.join([LETTERS[secret_alphabet.find(a)//6]+LETTERS[secret_alphabet.find(a)%6] for a in message])
return ''.join(convertedM[j] for i in (keyword.find(a) for a in sorted(keyword)) for j in range(i, len(convertedM), len(keyword)))
def decode(message, secret_alphabet, keyword):
keyword = ''.join(dict.fromkeys(keyword))
message_indexes = [j for i in (keyword.find(a) for a in sorted(keyword)) for j in range(i, len(message), len(keyword))]
convertedM = [None] * len(message)
for i in range(len(message)):
convertedM[message_indexes[i]] = message[i]
return ''.join(secret_alphabet[6*LETTERS.find(convertedM[i:i+2][0])+LETTERS.find(convertedM[i:i+2][1])] for i in range(0, len(message), 2))
if __name__ == '__main__':
assert encode("I am going",
"dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
"cipher") == 'FXGAFVXXAXDDDXGA', "encode I am going"
assert decode("FXGAFVXXAXDDDXGA",
"dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
"cipher") == 'iamgoing', "decode I am going"
assert encode("attack at 12:00 am",
"na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
"privacy") == 'DGDDDAGDDGAFADDFDADVDVFAADVX', "encode attack"
assert decode("DGDDDAGDDGAFADDFDADVDVFAADVX",
"na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
"privacy") == 'attackat1200am', "decode attack"
assert encode("ditiszeergeheim",
"na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
"piloten") == 'DFGGXXAAXGAFXGAFXXXGFFXFADDXGA', "encode ditiszeergeheim"
assert decode("DFGGXXAAXGAFXGAFXXXGFFXFADDXGA",
"na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
"piloten") == 'ditiszeergeheim', "decode ditiszeergeheim"
assert encode("I am going",
"dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
"weasel") == 'DXGAXAAXXVDDFGFX', "encode weasel == weasl"
assert decode("DXGAXAAXXVDDFGFX",
"dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
"weasel") == 'iamgoing', "decode weasel == weasl"
Sept. 1, 2020
Comments: