Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Cipher:
- def __init__(self):
- self.algorithm = ''
- self.key = None
- def set_algorithm(self, algo):
- self.algorithm=algo
- def set_key(self, key):
- self.key = key
- def crypt(self, buffer):
- enc=''
- if self.algorithm=='':
- return None
- elif self.algorithm=='Row-Transposition':
- """
- key : 123456
- plaintext: pythonchallenges
- step1: 123456
- python
- challe
- nges
- step2:
- cipher -> pcnyhgtaehlsolne
- """
- l = len(self.key)
- __key = [int(e) for e in self.key]
- __key.sort()
- parts=[]
- for i in range(0, len(buffer), l):
- parts.append(buffer[i:i+l])
- for i in range(len(self.key)):
- index = self.key.index(str(__key[i]))
- for e in parts:
- if len(e) < index+1:
- continue
- else:
- enc+=e[index]
- return enc
- elif self.algorithm=='Rail-Fence-Transposition':
- n = 1 + len(buffer)/self.key
- matrix = ['']*self.key
- for i in range(len(buffer)):
- matrix[i%self.key]+=buffer[i]
- for i in range(self.key):
- enc+=matrix[i]
- return enc
- else:
- return None
- C = Cipher()
- C.set_algorithm('Row-Transposition')
- C.set_key('123456')
- print C.crypt('pythonchallenges')
- C.set_algorithm('Rail-Fence-Transposition')
- C.set_key(2)
- print C.crypt('HELLOWORLD')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement