letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ','.',',','?','1','2','3','4','5','6','7','8','9','0'] |
cipher = [] |
pos_key = [] |
pos_text = [] |
pos_cipher = 0 |
key = [] |
plain = [] |
letters_len = 40 |
import os |
def find_pos(value): |
temp = [] |
i=0 |
while i<len(value): |
j=0 |
while j<letters_len: |
if value[i] letters[j]: |
temp.append(j) |
j = j+1 |
i= i+1 |
return temp |
def chek_end(m,n,size): |
if msize and n<size: |
m=0 |
return m |
if msize and nsize: |
return m,n |
return m |
def vigenere_encrypt(n): |
K = raw_input('Enter The Key ::::') |
P= raw_input('Enter The String To encrypt or decrypt ::::') |
key = map(lambda k:k.lower(),K) |
plain = map(lambda p:p.lower(),P) |
pos_key = find_pos(key) |
pos_text = find_pos(plain) |
if len(pos_key) > len(pos_text): |
range_list = pos_key |
else : |
range_list = pos_text |
i=0 |
j=0 |
loop_pass = 0 |
while i<len(range_list) and j<len(range_list) and loop_pass<len(pos_text): |
try: |
pos_cipher = n*pos_key[i] + pos_text[j] |
if pos_cipher<letters_len: |
cipher.append(letters[pos_cipher]) |
else: |
pos_cipher = pos_cipher-letters_len |
cipher.append(letters[pos_cipher]) |
i = i+1 |
j = j+1 |
if ilen(pos_key) and j<len(pos_text): |
i=0 |
elif jlen(pos_text) and i<len(pos_key): |
j=0 |
loop_pass = loop_pass + 1 |
except: |
print('Oops Something went wrong') |
result = ' .join(cipher) |
print result |
if __name__'__main__': |
n = input (' 1 for encrypt n-1 for decryptn::::') |
vigenere_encrypt(n) |
end=input ('press <enter>') |
pass |