Advertisement
Guest User

cipher.py

a guest
Mar 23rd, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.26 KB | None | 0 0
  1. class Cipher:
  2.     def __init__(self):
  3.         self.algorithm = ''
  4.         self.key = None
  5.     def set_algorithm(self, algo):
  6.         self.algorithm=algo
  7.     def set_key(self, key):
  8.         self.key = key
  9.     def crypt(self, buffer):
  10.         enc=''
  11.         if self.algorithm=='':
  12.             return None
  13.         elif self.algorithm=='Row-Transposition':
  14.             """
  15.                 key : 123456
  16.                 plaintext: pythonchallenges
  17.                 step1:  123456
  18.                         python
  19.                         challe
  20.                         nges
  21.                 step2:
  22.                 cipher -> pcnyhgtaehlsolne
  23.             """
  24.             l = len(self.key)
  25.             __key = [int(e) for e in self.key]
  26.             __key.sort()
  27.             parts=[]
  28.             for i in range(0, len(buffer), l):
  29.                 parts.append(buffer[i:i+l])
  30.             for i in range(len(self.key)):
  31.                 index = self.key.index(str(__key[i]))
  32.                 for e in parts:
  33.                     if len(e) < index+1:
  34.                         continue
  35.                     else:
  36.                         enc+=e[index]
  37.             return enc
  38.         elif self.algorithm=='Rail-Fence-Transposition':
  39.             n = 1 + len(buffer)/self.key
  40.             matrix = ['']*self.key
  41.             for i in range(len(buffer)):
  42.                 matrix[i%self.key]+=buffer[i]
  43.             for i in range(self.key):
  44.                 enc+=matrix[i]
  45.             return enc
  46.         else:
  47.             return None
  48. C = Cipher()
  49. C.set_algorithm('Row-Transposition')
  50. C.set_key('123456')
  51. print C.crypt('pythonchallenges')
  52. C.set_algorithm('Rail-Fence-Transposition')
  53. C.set_key(2)
  54. print C.crypt('HELLOWORLD')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement