Ahoj, opravdu si už nevím rady s touhle šifrou a tak se obracím na Vás, jestli by mi někdo z vás mohl pomoci. Samozřejmě je to úkol do školy, abych prolezl... V Pythonu jsem nikdy předtím neprogramoval (pouze ty úkoly které jsme dostali od září) Mám hotové nějaké věci, ale nedokážu si poradit s šifrováním. Dejme tomu, že budu mít OT = "Ahoj" tudíž si jej rozdělím na ["A", "H", "O", "J"] Z náhodně vygenerované tabulky 5x5 (teď beru jen variantu s tabulkou 5x5) potřebuju zjistit kde se nachází písmena OT a nahradit je za "Souřadnice" ADFGX A D F G X
Tabulka bude třeba: A V D L Q Y
D O F J H T
F X S M R K
G P I N G E
X B A Z C U
Takže zadaný text "AHOJ" -> XF DG DA DF
Tady je co už mám napsaný a jak jsem to řešil. Vím, je to jak od *******,ale prostě jsem začátečník a po tomhle semestru už se s Pythonem nebudu nikdy zabývat. PS: Pracuju rovnou s GUI.
import random
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtGui, uic
qtCreatorFile = "ADFG(V)X_Sifra_GUI.ui" # Enter file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
# Verze5 = 'ADFGX'
class MyApp(QMainWindow, Ui_MainWindow):
def Sifrovani(self):
"""Zadani OT a klice"""
OT = str(self.Otevreny_Text.text()).upper()
Klic_Zadany = str(self.Klic_Text.text()).upper()
CZ_Abeceda = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","X","Y","Z"]
Diakritika = {ord("Á"):"A", ord("Č"):"C", ord("É"):"E", ord("Ě"):"E", ord("Ď"):"D", ord("Í"):"I", ord("Ň"):"N", ord("Ó"):"O", ord("Ř"):"R", ord("Š"):"S", ord("Ť"):"T", ord("Ů"):"U", ord("Ú"):"U", ord("Ý"):"Y", ord("Ž"):"Z"}
SpecialZnak = {ord("!"):"", ord("?"):"", ord("*"):"", ord(":"):"", ord(";"):"", ord("."):"", ord("_"):"", ord("-"):"", ord(" "):"",ord(" "):"XMEZERAX"}
Cisla = {ord("0"):"XPTAX", ord("1"):"XVITX", ord("2"):"XINUX", ord("3"):"XJAKX", ord("4"):"XSTUX", ord("5"):"XOCIX", ord("6"):"XNEIX", ord("7"):"XRDHX", ord("8"):"XPOLX", ord("9"):"XFGHX",}
"""Osetreni"""
OT = OT.translate(Diakritika)
OT = OT.translate(SpecialZnak)
OT = OT.translate(Cisla)
Klic_Zadany = Klic_Zadany.translate(Diakritika)
Klic_Zadany = Klic_Zadany.translate(SpecialZnak)
Klic = []
Tabulka = []
"""Osetreni duplikace - vráceno v listu"""
for i in Klic_Zadany:
if i not in Klic:
Klic.append(i)
for i in CZ_Abeceda:
if i in Tabulka:
pass
else:
Tabulka +=i
random.shuffle(Tabulka)
Sifrovaci_Tabulka = []
radekPomocny = ""
ntice = 5
for i in range (0, len(Tabulka)):
znak = Tabulka[i]
radekPomocny += znak
if len(radekPomocny) == ntice:
Sifrovaci_Tabulka.append(radekPomocny)
radekPomocny = ""
if len(radekPomocny) > 0:
Sifrovaci_Tabulka.append(radekPomocny)
random.shuffle(Sifrovaci_Tabulka)
prvnichPet = Sifrovaci_Tabulka[0]
druhychPet = Sifrovaci_Tabulka[1]
tretichPet = Sifrovaci_Tabulka[2]
ctvrtychPet = Sifrovaci_Tabulka[3]
patychPet = Sifrovaci_Tabulka[4]
self.Tabulka_5_0.setText(str(prvnichPet))
self.Tabulka_5_1.setText(str(druhychPet))
self.Tabulka_5_2.setText(str(tretichPet))
self.Tabulka_5_3.setText(str(ctvrtychPet))
self.Tabulka_5_4.setText(str(patychPet))
print(prvnichPet)
print(druhychPet)
print(tretichPet)
print(ctvrtychPet)
print(patychPet)
print(OT)
OT_list = []
# for i in OT:
# OT_list += i
# print(OT_list)
#for i in range(0,len(OT)):
#OT_list.append(ord(OT[i]))
#print(OT_list)
Verze5 = 'ADFGX'
Zasifrovany_Znak = []
# Radek = ""
# Sloupec = ""
# print(type(Radek))
# print(type(Sloupec))
print("----------")
"""Zjisteni pozice znaku OT v tabulce"""
for Znak in OT_list:
Radek = 0
Sloupec = 0
hledanyZnak = Znak
for i in range(0, len(Sifrovaci_Tabulka)):
for j in range(0, len(Sifrovaci_Tabulka[i])):
if hledanyZnak == Sifrovaci_Tabulka[i][j]:
Verze5.index(OT_list)
i += Verze5[Radek]
j += Verze5[Sloupec]
ZasifrovanyZnak = i + j
print(Zasifrovany_Znak)
return 1
def __init__(self):
QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.Sifrovat.clicked.connect(self.Sifrovani)
#self.Desifrovat.clicked.connect(self.Desifrovani)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())