SHARE
TWEET

Untitled

powerman50061 Dec 13th, 2019 86 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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top