Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.84 KB | None | 0 0
  1. ADFGVX="ADFGVX"
  2. dict={'A': 0,'D': 1,'F': 2,'G': 3,'V': 4,'X': 5}
  3.  
  4. def cutKey(key):
  5.     x=""
  6.     while key:
  7.         x+=key[0]
  8.         key=key.replace(key[0],"")
  9.     return x
  10.    
  11. def cutMsg(msg):
  12.     ret=""
  13.     for i in msg:
  14.         if (ord(i)>=ord("a") and ord(i)<=ord("z"))or(ord(i)>=ord("0") and ord(i)<=ord("9")):
  15.             ret+=i
  16.     return ret
  17.  
  18. def findInAlphabet(x,a):
  19.     i=0
  20.     while i<len(a):
  21.         if a[i]==x:
  22.             return str(ADFGVX[i//6]+ADFGVX[i%6])
  23.         i+=1
  24.     print(x)
  25.     return '_'
  26.  
  27. def encode(message, secret_alphabet, keyword):
  28.     mat=[]
  29.     message=message.lower()
  30.     message=message.replace(" ","")
  31.     message=cutMsg(message)
  32.     print(message)
  33.     word=""
  34.     for i in message:
  35.         word+=findInAlphabet(i,secret_alphabet)
  36.     #print(word)
  37.     key=cutKey(keyword)
  38.     for a in key:
  39.         mat.append([a])
  40.     i=0
  41.     while i < len(word):
  42.         mat[i%len(key)].append(word[i])
  43.         i+=1
  44.     mat=sorted(mat, key=lambda x: x[0])
  45.     #print(mat)
  46.     message=""
  47.     i=1
  48.     for j in mat:
  49.         while i<len(j):
  50.             message+=j[i]
  51.             i+=1
  52.         i=1
  53.     print(message)
  54.     return message
  55.  
  56.  
  57. def decode(message, secret_alphabet, keyword):
  58.     keyword=cutKey(keyword)
  59.     key=sorted(keyword)
  60.     print(keyword)
  61.     mat=[]
  62.     for i in key:
  63.         mat.append([i])
  64.     i=0
  65.     temp=len(message)+len(keyword)-(len(message)%len(keyword))
  66.     #print(temp)
  67.     d=len(message)
  68.     while i<len(keyword):
  69.         #print(keyword.find(key[i]))
  70.         #print(d%len(keyword))
  71.         #print((key[i].find(keyword))>=(d%len(keyword)))
  72.         if keyword.find(key[i])>=d%len(keyword):
  73.             #print("tutaj")
  74.             for j in range(temp//len(keyword)-1):
  75.                 mat[i].append(message[0])
  76.                 message=message[1:]
  77.         elif message:
  78.             for j in range(temp//len(keyword)):
  79.                 if message:
  80.                     mat[i].append(message[0])
  81.                     message=message[1:]
  82.         i+=1
  83.     word=""
  84.     mat=sorted(mat, key=lambda x: keyword.find(x[0]))
  85.     #print(mat)
  86.     z=0
  87.     for j in range(1,temp//len(keyword)+1):
  88.         for i in range(len(key)):
  89.             if j<len(mat[i]):
  90.                 word+=mat[i][j]
  91.                 z+=1
  92.     i=0
  93.     #print(word)
  94.     ans=""
  95.     while i<len(word):
  96.         ans+=secret_alphabet[dict[word[i]]*6+dict[word[i+1]]]
  97.         i+=2
  98.     #print(ans)
  99.     return ans
  100.  
  101.  
  102. if __name__ == '__main__':
  103.  
  104.     assert encode("I am going",
  105.                   "dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
  106.                   "cipher") == 'FXGAFVXXAXDDDXGA', "encode I am going"
  107.     assert decode("FXGAFVXXAXDDDXGA",
  108.                   "dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
  109.                   "cipher") == 'iamgoing', "decode I am going"
  110.     assert encode("attack at 12:00 am",
  111.                   "na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
  112.                   "privacy") == 'DGDDDAGDDGAFADDFDADVDVFAADVX', "encode attack"
  113.     assert decode("DGDDDAGDDGAFADDFDADVDVFAADVX",
  114.                   "na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
  115.                   "privacy") == 'attackat1200am', "decode attack"
  116.     assert encode("ditiszeergeheim",
  117.                   "na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
  118.                   "piloten") == 'DFGGXXAAXGAFXGAFXXXGFFXFADDXGA', "encode ditiszeergeheim"
  119.     assert decode("DFGGXXAAXGAFXGAFXXXGFFXFADDXGA",
  120.                   "na1c3h8tb2ome5wrpd4f6g7i9j0kjqsuvxyz",
  121.                   "piloten") == 'ditiszeergeheim', "decode ditiszeergeheim"
  122.     assert encode("I am going",
  123.                   "dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
  124.                   "weasel") == 'DXGAXAAXXVDDFGFX', "encode weasel == weasl"
  125.     assert decode("DXGAXAAXXVDDFGFX",
  126.                   "dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
  127.                   "weasel") == 'iamgoing', "decode weasel == weasl"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement