Advertisement
powerman50061

Untitled

Dec 13th, 2019
1,306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from math import ceil
  2. alfcode={'.':35,'а':1,'б':2,'в':3,'г':4,'д':5,'е':6,'ё':7,'ж':8,'з':9,'и':10,'й':11,'к':12,'л':13,'м':14,'н':15,'о':16,'п':17,'р':18,'с':19,'т':20,'у':21,'ф':22,'х':23,'ц':24,'ч':25,'ш':26,'щ':27,'ъ':28,'ы':29,'ь':30,'э':31,'ю':32,'я':33}
  3. def shifrovka():
  4.     '''Шифрует'''
  5.     h=[]
  6.     normtext,normkey,intkey = norm()
  7.     for j in range(0,len(normkey)):
  8.         stroka=''
  9.         for i in range(j,len(normtext),len(normkey)):
  10.             stroka+=normtext[i]
  11.         h.append(stroka)
  12.     result=''
  13.     for i in range(0,len(intkey)):
  14.         result+=(h[intkey.index(i)])
  15.     print(result)
  16. def deshifrovka():
  17.     '''Дешифрует'''
  18.     a=[]
  19.     pp=[]
  20.     f=[]
  21.     normtext,normkey,intkey = norm()
  22.     ff = ceil(len(normtext)/len(normkey))
  23.     for i in range(len(normkey)):
  24.         a.append(normtext[ff*i:ff*(i+1)])
  25.     d=dict.fromkeys(intkey)
  26.     for i in range(0,len(a)):
  27.         d[i]=a[i]    
  28.     for x,y in d.items():
  29.         pp.append(y)
  30.     result_1=''
  31.     for i in range(len(pp)):
  32.         for j in range(len(pp[0])):
  33.             result_1+=pp[i][j]
  34.     for i in range(0,len(pp[0])):
  35.         stroka=''
  36.         for j in range(i,len(result_1),len(pp[0])):
  37.             stroka+=result_1[j]
  38.         f.append(stroka)
  39.     result=''
  40.     for i in range(len(f)):
  41.         for j in range(len(f[0])):
  42.             result+=f[i][j]
  43.     print(result)
  44. def norm():
  45.     text=input('Введите текст(на русском): ')
  46.     key=input('Введите ключ: ')
  47.     lowtext=text.lower()
  48.     lowkey=key.lower()
  49.     key_1=''
  50.     for i in lowkey:
  51.         if i not in key_1:
  52.             key_1+=i
  53.     normtext=[]
  54.     normkey=[]
  55.     for j in list(lowtext):
  56.         if j in alfcode:
  57.             normtext+=j
  58.     for i in list(key_1):
  59.         if i in alfcode:
  60.             normkey+=i
  61.     while True:
  62.         if len(normtext)%len(normkey)!=0:
  63.             normtext+='.'
  64.             continue
  65.         else:
  66.             break
  67.     rualf='абвгдеёжзийклмнопрстуфхцчшщъыьэюя.'
  68.     intkey_1=[]
  69.     for i in list(normkey):
  70.         intkey_1.append(rualf.index(i)+1)
  71.     f=max(intkey_1)+1
  72.     intkey=intkey_1.copy()
  73.     for i in range(0,len(intkey_1)):
  74.         intkey[intkey_1.index(min(intkey_1))]=i
  75.         intkey_1[intkey_1.index(min(intkey_1))]=f
  76.     return normtext,normkey,intkey
  77. while True:
  78.     menu=int(input('''
  79. 1-зашифровать
  80. 2-дешифровать
  81. 0-выход
  82. '''))
  83.     if menu==1:
  84.         shifrovka()
  85.         continue
  86.     elif menu==2:
  87.         deshifrovka()
  88.         continue
  89.     elif menu==0:
  90.         break
  91.     else:
  92.         print('Неверный пункт меню!')
  93.         continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement