예제 #1
0
    def OnClick(self, event):
        """ Event bind to 'Generate' button """
        #Validation
        valid = self.validation()
        if valid == True:
            pass
        else:
            return None
	
	pyplot.close("all")
        filter_ = Filter(self.fp, self.fs, self.gpass, self.gstop, ftype=self.ftype, btype=self.btype)
        filter_.step_response()
        filter_.phase_response()
        filter_.poles_zeros() 
        filter_.freq_response()

        if self.ftype == "ellip":
            pass
        else:
            ladder = LCladder(self.R1, self.R2, self.fp, self.fs, self.gpass, self.gstop, ftype=self.ftype, btype=self.btype) 
            if filter_.btype == "lowpass":
                if self.R1 == self.R2:
                    lc_ladder_elements = ladder.load_matched()
                else:
                    lc_ladder_elements = ladder.load_not_matched()
                    
                scheme = Scheme(self.R1, self.R2, filter_.ord)
                scheme.design(lc_ladder_elements) 
                
                frame = wx.Frame(None, size=(scheme.img_size[0], 250))
                panel = SchemePanel(frame)
                frame.Show()
        pyplot.show()
예제 #2
0
 def GenerateScheme(*types):
   scheme = Scheme()
   for type in types:
     t = type()
     t._InitFromReflection()
     scheme._AddType(t)
   return scheme
def reconstruct_image(images, k, prime, shares):
    imgs = [np.array(Image.open(i)) for i in images]
    row_count = 0
    mat_len, row_len, rgb = imgs[0].shape
    len_imgs = len(imgs)
    matrix = [[] for i in range(mat_len)]
    need_calc = []
    img_dict = {}
    rec_info = {}
    counter = 0
    for row in imgs[0]:
        rec_pix = [[] for i in range(row_len)]
        pix_count = 0
        for pix in row:
            shares_r = []
            shares_g = []
            shares_b = []
            save = False
            num = 0
            for j in range(len_imgs):
                red, green, blue = imgs[j][row_count][pix_count][0], imgs[j][row_count][pix_count][1], \
                                   imgs[j][row_count][pix_count][2]
                if (red == 0 or blue == 0 or green
                        == 0) and ([row_count, pix_count] not in need_calc):
                    need_calc.append([row_count, pix_count])
                    img_dict[counter] = [red, green, blue]
                    save = True
                    num = j
                shares_r.append(red)
                shares_g.append(green)
                shares_b.append(blue)
            if save:
                rec_info[counter] = [num, shares_r, shares_g, shares_b]
                counter += 1
            r, g, b = int(Scheme.reconstruct_secret_img(shares[0][row_count][pix_count], shares_r, k, prime)), \
                      int(Scheme.reconstruct_secret_img(shares[1][row_count][pix_count], shares_g, k, prime)), \
                      int(Scheme.reconstruct_secret_img(shares[2][row_count][pix_count], shares_b, k, prime))
            if r == 256:
                r = 0
            if g == 256:
                g = 0
            if b == 256:
                b = 0
            rec_pix[pix_count] = [r, g, b]
            pix_count += 1
        matrix[row_count] = rec_pix
        row_count += 1
    matrix = np.asarray(matrix)
    for i in range(len(need_calc)):
        [red, green, blue] = img_dict[i]
        [row_count, pix_count] = need_calc[i]
        [r, g, b] = matrix[row_count][pix_count]
        R, G, B = euclidean_dist(i, need_calc[i][0], need_calc[i][1],
                                 [r, g, b], [red, green, blue], rec_info,
                                 matrix, shares, k, prime)
        matrix[need_calc[i][0]][need_calc[i][1]] = [R, G, B]
    return matrix
예제 #4
0
파일: run.py 프로젝트: reversefold/scheme
def main():
    expression = sys.stdin.read()

    print "Input:    %s" % (expression,)
    token = SchemeParser(expression).parse()
    print "Token:    %s" % (token,)
    s = Scheme(token)
    result = s.ceval()
    print "Value:    %s" % (result,)
예제 #5
0
def main():
    gb = import_gb("cut", 2)

    param = get_param()

    scheme = Scheme(gb)
    scheme.set_data(param)

    # exporter
    save = pp.Exporter(gb, "case5", folder_name="solution")
    vars_to_save = scheme.vars_to_save()

    # post process
    scheme.extract()
    save.write_vtk(vars_to_save, time_step=0)

    for i in np.arange(param["time"]["num_steps"]):

        print("processing", i, "step at time", i * param["time"]["step"])

        # do one step of the splitting scheme
        scheme.one_step_splitting_scheme()

        # post process
        time = param["time"]["step"] * (i + 1)
        save.write_vtk(vars_to_save, time_step=time)

    time = np.arange(param["time"]["num_steps"] + 1) * param["time"]["step"]
    save.write_pvd(time)
def split_parts_list(n, k, prime, img, path_pic):
    h, w, rgb = img.shape  # height, image width
    name, ext = path.splitext(path_pic)  # split to image path and extension
    np_lists = np.zeros(shape=(n, h, w, 3))
    # np_lists = [[] for i in range(n)]  # blank list, for shares of picture
    shrs = [[[[] for j in range(w)] for i in range(h)],
            [[[] for j in range(w)] for i in range(h)],
            [[[] for j in range(w)] for i in range(h)]
            ]  # share values for each pixel RGB : shrs[0] is red ...
    # the image is a matrix = a series of rows of pixels
    row_count = 0
    for row in img:  # for each row in img
        new_rows = np.zeros(shape=(n, w, 3))
        # new_rows = [[] for j in range(n)]  # we make new rows, ie as many rows as we have division = n
        pix_count = 0
        for pix in row:
            if len(pix) == 3:
                r, g, b = pix[0], pix[1], pix[
                    2]  # check that the pixel is plain => three values ​​=> RGB
            else:  # or has 4 values, where the alpha indicator is the first value
                r, g, b = pix[1], pix[2], pix[3]
            p1, p2, p3 = Scheme(r, n, k, prime), Scheme(
                g, n, k, prime
            ), Scheme(
                b, n, k, prime
            )  # each color value in a pixel is divided by SSSA into n values
            sh1, sh2, sh3 = p1.construct_shares_image(
            ), p2.construct_shares_image(), p3.construct_shares_image()
            for i in range(n):
                new_rows[i][pix_count] = [
                    sh1[i + 1], sh2[i + 1], sh3[i + 1]
                ]  # we add newly created pixels to existing strings of new images
            shrs[0][row_count][pix_count] = sh1
            shrs[1][row_count][pix_count] = sh2
            shrs[2][row_count][pix_count] = sh3
            pix_count += 1
        row_count += 1
        v = 0
        for el in range(n):
            np_lists[el][row_count - 1] = new_rows[
                el]  #adding the entire row to the shares matrix - image
            v += 1
    i = 0
    for image in np_lists:
        new_img = Image.fromarray(image.astype(
            'uint8'))  #creating shares - images from newly created matrices
        cuvanje = name + "_share" + str(i)
        cuvanje += ".png"
        new_img.save(cuvanje)
        i += 1
    return shrs
def split_parts_list(n, k, prime, img, path_pic):
    h, w, rgb = img.shape  # visina, sirina slike
    name, ext = path.splitext(path_pic)  # putanja slike, odvajanje ekstenzije
    np_lists = np.zeros(shape=(n, h, w, 3))
    # np_lists = [[] for i in range(n)]  # prazne liste, za shares - slike
    shrs = [[[[] for j in range(w)] for i in range(h)],
            [[[] for j in range(w)] for i in range(h)],
            [[[] for j in range(w)] for i in range(h)]
            ]  # shares vrijednosti za svaki piksel RGB : shrs[0] je crvena ...
    # slika je matrica = niz nizova(redova) piksela
    row_count = 0
    for row in img:  # za svaki red u nizu redova
        new_rows = np.zeros(shape=(n, w, 3))
        # new_rows = [[] for j in range(n)]  # pravimo nove redove tj onoliko redova koliko imamo podjela = n
        pix_count = 0
        for pix in row:
            if len(pix) == 3:
                r, g, b = pix[0], pix[1], pix[
                    2]  # provjera da li je piksel obicni => tri vrijednosti => RGB
            else:  # ili ima 4 vrijednosti, gdje je indikator alfa prva vrijednost
                r, g, b = pix[1], pix[2], pix[3]
            p1, p2, p3 = Scheme(r, n, k, prime), Scheme(
                g, n, k, prime
            ), Scheme(
                b, n, k, prime
            )  # svaku vrijednost boja u pikselu dijelimo SSSA-om na n vrijednosti
            sh1, sh2, sh3 = p1.construct_shares_image(
            ), p2.construct_shares_image(), p3.construct_shares_image()
            for i in range(n):
                new_rows[i][pix_count] = [
                    sh1[i + 1], sh2[i + 1], sh3[i + 1]
                ]  # u postojece nizove novih slika dodajemo novonastale piksele
            shrs[0][row_count][pix_count] = sh1
            shrs[1][row_count][pix_count] = sh2
            shrs[2][row_count][pix_count] = sh3
            pix_count += 1
        row_count += 1
        v = 0
        for el in range(n):
            np_lists[el][row_count - 1] = new_rows[
                el]  # dodavanje citavog reda u matrice shares - slika
            v += 1
    i = 0
    for image in np_lists:
        new_img = Image.fromarray(image.astype(
            'uint8'))  # kreiranje shares - slika od novonastalih matrica
        cuvanje = name + "_share" + str(i)
        cuvanje += ".png"
        new_img.save(cuvanje)
        i += 1
    return shrs
def euclidean_dist(cnt, row, col, pix, sh_pix, rec_info, rec_pic, shares, k,
                   prime):
    h, w = len(rec_pic), len(rec_pic[0])
    dist1 = 0
    dist2 = 0
    R = sh_pix[0]
    G = sh_pix[1]
    B = sh_pix[2]
    if R == 0:
        R = 256
    if G == 0:
        G = 256
    if B == 0:
        B = 256

    adjacent = []
    sec_adj = []
    temp_rec = rec_pic
    [num, shares_r, shares_g, shares_b] = rec_info[cnt]
    shares_r[num], shares_g[num], shares_b[num] = R, G, B
    r, g, b = Scheme.reconstruct_secret_img(shares[0][row][col], shares_r, k, prime), \
              Scheme.reconstruct_secret_img(shares[1][row][col], shares_g, k, prime), \
              Scheme.reconstruct_secret_img(shares[2][row][col], shares_b, k, prime)
    temp_rec[row][col] = [r, g, b]
    R, G, B = r, g, b

    for j in range(row - 1, row + 2):
        for i in range(col - 1, col + 2):
            if 0 <= i < w and 0 <= j < h and not (j == row and i == col):
                adjacent.append(rec_pic[j][i])
                sec_adj.append(temp_rec[j][i])

    for a in range(len(adjacent)):
        cR = pix[0] - adjacent[a][0]
        cR2 = R - sec_adj[a][0]
        cG = pix[1] - adjacent[a][1]
        cG2 = G - sec_adj[a][1]
        cB = pix[2] - adjacent[a][2]
        cB2 = B - sec_adj[a][2]
        uR = (pix[0] + adjacent[a][0]) / 2
        uR2 = (R + sec_adj[a][0]) / 2
        dist1 += sqrt(cR * cR * (2 + uR / 256) + cG * cG * 4 + cB * cB *
                      (2 + (255 - uR) / 256))
        # racunanje reconstruct_secret preko prethodne vrijednosti, tj. ako piksel stavimo na 256 ( prethodno u ekripciji postavljen na 0)
        dist2 += sqrt(cR2 * cR2 * (2 + uR2 / 256) + cG2 * cG2 * 4 + cB2 * cB2 *
                      (2 + (255 - uR2) / 256))

    if dist1 < dist2:
        R, G, B = pix[0], pix[1], pix[2]
    return [R, G, B]
def euclidean_dist(cnt, row, col, pix, sh_pix, rec_info, rec_pic, shares, k,
                   prime):
    h, w = len(rec_pic), len(rec_pic[0])
    dist1 = 0
    dist2 = 0
    R = sh_pix[0]
    G = sh_pix[1]
    B = sh_pix[2]
    if R == 0:
        R = 256
    if G == 0:
        G = 256
    if B == 0:
        B = 256

    adjacent = []
    sec_adj = []
    temp_rec = rec_pic
    [num, shares_r, shares_g, shares_b] = rec_info[cnt]
    shares_r[num], shares_g[num], shares_b[num] = R, G, B
    r, g, b = Scheme.reconstruct_secret_img(shares[0][row][col], shares_r, k, prime), \
              Scheme.reconstruct_secret_img(shares[1][row][col], shares_g, k, prime), \
              Scheme.reconstruct_secret_img(shares[2][row][col], shares_b, k, prime)
    temp_rec[row][col] = [r, g, b]
    R, G, B = r, g, b

    for j in range(row - 1, row + 2):
        for i in range(col - 1, col + 2):
            if 0 <= i < w and 0 <= j < h and not (j == row and i == col):
                adjacent.append(rec_pic[j][i])
                sec_adj.append(temp_rec[j][i])

    for a in range(len(adjacent)):
        cR = pix[0] - adjacent[a][0]
        cR2 = R - sec_adj[a][0]
        cG = pix[1] - adjacent[a][1]
        cG2 = G - sec_adj[a][1]
        cB = pix[2] - adjacent[a][2]
        cB2 = B - sec_adj[a][2]
        uR = (pix[0] + adjacent[a][0]) / 2
        uR2 = (R + sec_adj[a][0]) / 2
        dist1 += sqrt(cR * cR * (2 + uR / 256) + cG * cG * 4 + cB * cB *
                      (2 + (255 - uR) / 256))
        # computing reconstruct_secret over the previous value, ie. if we set the pixel to 256 (previously set to 0 in encryption)
        dist2 += sqrt(cR2 * cR2 * (2 + uR2 / 256) + cG2 * cG2 * 4 + cB2 * cB2 *
                      (2 + (255 - uR2) / 256))

    if dist1 < dist2:
        R, G, B = pix[0], pix[1], pix[2]
    return [R, G, B]
예제 #10
0
 def decrypt_text(self):
     if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
     ) == "":
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Грешка",
             "Молим унесите текст за енкрипцију")
         self.error_message.exec_()
     elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
     ) < self.spinBox_3.value() or self.spinBox_3.value(
     ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Грешка",
             "Неки од броја подјела није добар")
         self.error_message.exec_()
     elif self.listWidget_5.count() < self.spinBox_3.value():
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Грешка",
             "Није унешено довољно дијелова")
         self.error_message.exec_()
     else:
         reconstructed_secret = ""
         b = 0
         for dic in self.text_shares:
             reconstructed_secret += chr(
                 int(
                     Scheme.reconstruct_secret_img(dic,
                                                   self.glavna_lista[b],
                                                   self.spinBox_3.value(),
                                                   127)))
             b += 1
         self.textEdit_2.setText(reconstructed_secret)
         self.listWidget_5.clear()
         self.glavna_lista = [[] for i in range(len(self.secret_text))]
예제 #11
0
def main():

    s = Scheme.load(open(sys.argv[1]))

    print "// {0}".format(str(s).translate(None, "\r\n"))

    print "digraph unix {"
    print " rank=sink; weight=1;  "

    for node in ["X"] + range(0, s.num_nodes):

        # node = c.nodes[node]

        print "// {0}".format(node)
        node_name = '"{0}" [ shape="record"'
        if node != "X":
            node_name += ' label="{0}|<L> L | <R> R"'
        node_name += "];"
        print node_name.format(node)

        if node != "X":
            edge_l = str(node) + "L"
            print '"{0}":L:s -> {1}:n [color="red"];'.format(node, print_viz(s.to[edge_l]))
            edge_r = str(node) + "R"
            print '"{0}":R:s -> {1}:n [color="green"];'.format(node, print_viz(s.to[edge_r]))
        else:
            print '"{0}":s -> {1}:n;'.format(node, print_viz(s.to[node]))

        print " "

    print "}"
예제 #12
0
 def decrypt_text(self):
     if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
     ) == "":
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Error",
             "Please enter text for encryption")
         self.error_message.exec_()
     elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
     ) < self.spinBox_3.value() or self.spinBox_3.value(
     ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Error",
             "Some of the number of divisions is not good")
         self.error_message.exec_()
     elif self.listWidget_5.count() < self.spinBox_3.value():
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Error",
             "Not enough parts entered")
         self.error_message.exec_()
     else:
         reconstructed_secret = ""
         b = 0
         for dic in self.text_shares:
             reconstructed_secret += chr(
                 int(
                     Scheme.reconstruct_secret_img(dic,
                                                   self.glavna_lista[b],
                                                   self.spinBox_3.value(),
                                                   127)))
             b += 1
         self.textEdit_2.setText(reconstructed_secret)
         self.listWidget_5.clear()
         self.glavna_lista = [[] for i in range(len(self.secret_text))]
예제 #13
0
    def OnClick(self, event):
        """ Event bind to 'Generate' button """
        # Validation
        valid = self.validation()
        if valid == True:
            pass
        else:
            return None

        pyplot.close("all")
        filter_ = Filter(self.fp,
                         self.fs,
                         self.gpass,
                         self.gstop,
                         ftype=self.ftype,
                         btype=self.btype)
        filter_.step_response()
        filter_.phase_response()
        filter_.poles_zeros()
        filter_.freq_response()

        if self.ftype == "ellip":
            pass
        else:
            ladder = LCladder(self.R1,
                              self.R2,
                              self.fp,
                              self.fs,
                              self.gpass,
                              self.gstop,
                              ftype=self.ftype,
                              btype=self.btype)
            if filter_.btype == "lowpass":
                if self.R1 == self.R2:
                    lc_ladder_elements = ladder.load_matched()
                else:
                    lc_ladder_elements = ladder.load_not_matched()

                scheme = Scheme(self.R1, self.R2, filter_.ord)
                scheme.design(lc_ladder_elements)

                frame = wx.Frame(None, size=(scheme.img_size[0], 250))
                panel = SchemePanel(frame)
                frame.Show()
        pyplot.show()
예제 #14
0
def main():

    mesh_size = np.power(2., -7)
    gb = create_gb(mesh_size)

    param = get_param()

    scheme = Scheme(gb)
    scheme.set_data(param)

    # exporter
    folder = "./case2/"
    save = pp.Exporter(gb, "case2", folder_name=folder+"solution_ml")
    vars_to_save = scheme.vars_to_save()

    # post process
    save.write_vtk(vars_to_save, time_step=0)

    for i in np.arange(param["time"]["num_steps"]):
        time = (i+1)*param["time"]["step"]

        print("processing", i, "step at time", time)

        # do one step of the splitting scheme
        scheme.one_step_splitting_scheme(time)

        # post process
        save.write_vtk(vars_to_save, time_step=time)

    time = np.arange(param["time"]["num_steps"]+1)*param["time"]["step"]
    save.write_pvd(time)
예제 #15
0
    def encrypt_text(self):
        self.listWidget_4.clear()
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Please enter text for encryption")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        else:
            self.secret_text = self.textEdit.toPlainText()
            text = [ord(c) for c in self.secret_text]
            self.glavna_lista = [[] for i in range(len(self.secret_text))]
            shares, lista = [], []
            for el in text:
                s = Scheme(el, self.spinBox_4.value(), self.spinBox_3.value(),
                           127)
                shares = s.construct_shares()
                lista.append(shares)

            print(lista)
            self.text_shares = lista
            words_list = [''] * self.spinBox_4.value()
            for dic in lista:
                dict_variable = {}
                counter = 0
                for (key, value) in dic.items():
                    if value < 32:
                        dict_variable[key] = spec_chars[value]
                        words_list[counter] += dict_variable[key]
                    else:
                        dict_variable[key] = chr(value)
                        words_list[counter] += dict_variable[key]
                    counter += 1
                print(dict_variable)
            print(words_list)

            for word in words_list:
                self.listWidget_4.addItem(word)
예제 #16
0
    def encrypt_text(self):
        self.listWidget_4.clear()
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Молим унесите текст за енкрипцију")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        else:
            self.secret_text = self.textEdit.toPlainText()
            text = [ord(c) for c in self.secret_text]
            self.glavna_lista = [[] for i in range(len(self.secret_text))]
            shares, lista = [], []
            for el in text:
                s = Scheme(el, self.spinBox_4.value(), self.spinBox_3.value(),
                           127)
                shares = s.construct_shares()
                lista.append(shares)

            print(lista)
            self.text_shares = lista
            words_list = [''] * self.spinBox_4.value()
            for dic in lista:
                dict_variable = {}
                counter = 0
                for (key, value) in dic.items():
                    if value < 32:
                        dict_variable[key] = spec_chars[value]
                        words_list[counter] += dict_variable[key]
                    else:
                        dict_variable[key] = chr(value)
                        words_list[counter] += dict_variable[key]
                    counter += 1
                print(dict_variable)
            print(words_list)

            for word in words_list:
                self.listWidget_4.addItem(word)
예제 #17
0
 def encrypt_number(self):
     self.listWidget_6.clear()
     if self.spinBox_5.value() == 0:
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Грешка",
             "Молим унесите број за енкрипцију")
         self.error_message.exec_()
     elif self.spinBox_12.value() == 0 or self.spinBox_12.value(
     ) < self.spinBox_11.value() or self.spinBox_11.value(
     ) == 0 or self.spinBox_12.value() < 2 or self.spinBox_11.value() < 2:
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Грешка",
             "Неки од броја подјела није добар")
         self.error_message.exec_()
     else:
         secret = self.spinBox_5.value()
         self.secret_number = Scheme(secret, self.spinBox_12.value(),
                                     self.spinBox_11.value(),
                                     5000003863)  # 5000003863 2147483869
         self.shares_number = self.secret_number.construct_shares()
         for sh in self.shares_number:
             self.listWidget_6.addItem(str(self.shares_number[sh]))
         self.inputs = []
예제 #18
0
 def encrypt_number(self):
     self.listWidget_6.clear()
     if self.spinBox_5.value() == 0:
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Error",
             "Please enter the encryption number")
         self.error_message.exec_()
     elif self.spinBox_12.value() == 0 or self.spinBox_12.value(
     ) < self.spinBox_11.value() or self.spinBox_11.value(
     ) == 0 or self.spinBox_12.value() < 2 or self.spinBox_11.value() < 2:
         self.error_message = QtWidgets.QMessageBox(
             QtWidgets.QMessageBox.Critical, "Error",
             "Some of the number of divisions is not good")
         self.error_message.exec_()
     else:
         secret = self.spinBox_5.value()
         self.secret_number = Scheme(secret, self.spinBox_12.value(),
                                     self.spinBox_11.value(),
                                     5000003863)  # 5000003863 2147483869
         self.shares_number = self.secret_number.construct_shares()
         for sh in self.shares_number:
             self.listWidget_6.addItem(str(self.shares_number[sh]))
         self.inputs = []
예제 #19
0
파일: api.py 프로젝트: Kins1ley/tvm
def create_scheme(inputs, func):
    """Create a quantization scheme.

    The first argument is a list of inputs to the second argument, which is a
    function the defines the algorithm. The numbers of arguments should match.
    The function will be set with attributes for later optimizations. This
    API returns an object that has two methods: `quantize` and `downsize`.

    Parameters
    ----------
    inputs : Tensor or list of Tensor
        A list of placeholders that are inputs to the algorithm. It can be a
        single tensor

    func : callable
        A function that defines the algorithm

    Returns
    -------
    Scheme

    See Also
    --------
    scheme.Scheme.downsize, scheme.Scheme.quantize

    Examples
    --------
    .. code-block:: python

        A = hcl.placeholder((10,))
        def algo(A):
            return hcl.compute(A.shape, lambda x: A[x]+1, "B")
        s = hcl.create_scheme(A, algo)
        s.downsize(algo.B, hcl.Int(8))
    """
    if not isinstance(inputs, list):
        inputs = [inputs]
    func(*inputs)
    for op in Schedule.stage_ops:
        func.__setattr__(op.name, op)
    return Scheme(inputs, func)
예제 #20
0
def main(argv=None) -> None:
    # Build arg parser
    parser = ArgumentParser(prog='opcg')

    # Flags
    parser.add_argument('-V',
                        '--version',
                        help='Version',
                        action='version',
                        version=getVersion())
    parser.add_argument('-v', '--verbose', help='Verbose', action='store_true')
    parser.add_argument('-d',
                        '--dump',
                        help='JSON store dump',
                        action='store_true')
    parser.add_argument('-m',
                        '--makefile',
                        help='Create Makefile stub',
                        action='store_true')
    parser.add_argument('-o',
                        '--out',
                        help='Output directory',
                        type=isDirPath,
                        default='.')
    parser.add_argument('-p',
                        '--prefix',
                        help='Output File Prefix',
                        type=isValidPrefix,
                        default='op')
    parser.add_argument('-soa',
                        '--soa',
                        help='Structs of Arrays',
                        action='store_true')
    parser.add_argument('-I',
                        help='Header Include',
                        type=isDirPath,
                        action='append',
                        nargs='+',
                        default=['.'])

    # Positional args
    parser.add_argument('optimisation',
                        help='Optimisation scheme',
                        type=str,
                        choices=Opt.names())
    parser.add_argument('file_paths',
                        help='Input OP2 sources',
                        type=isFilePath,
                        nargs='+')

    # Invoke arg parser
    args = parser.parse_args(argv)

    # Collect the set of file extensions
    extensions = {os.path.splitext(path)[1][1:] for path in args.file_paths}

    # Validate the file extensions
    if not extensions:
        exit('Missing file extensions, unable to determine target language.')
    elif len(extensions) > 1:
        exit('Varying file extensions, unable to determine target language.')
    else:
        [extension] = extensions

    # Determine the target language and optimisation
    opt = Opt.find(args.optimisation)
    lang = Lang.find(extension)

    if not lang:
        exit(f'Unsupported file extension: {extension}')

    scheme = Scheme.find(lang, opt)
    if not scheme:
        exit(f'No scheme registered for {lang} {opt}')

    if args.verbose:
        print(f'Translation scheme: {scheme}')

    # Parsing phase
    try:
        app = parsing(args, scheme)
    except ParseError as e:
        exit(e)

    # Validation phase
    try:
        validate(args, scheme, app)
    except OpError as e:
        exit(e)

    # Code-generation phase
    codegen(args, scheme, app)

    # End of main
    if args.verbose:
        print('\nTerminating')
예제 #21
0
from scheme import Scheme

start = Scheme().start
end = Scheme().end


class Node:
    def __init__(self, x, y):
        self.position = x, y
        self.costs = self.calc_costs()

    def calc_costs(self):
        # g(n) cost = from staring node cost
        g = self.calc_distance(*self.position, *start)

        # h(n) cost = heuristics estimated cost
        h = self.calc_distance(*self.position, *end)

        # f(n) cost = g(n) + h(n)
        f = g + h

        return (f, h, g)

    def calc_distance(self, x, y, x2, y2):
        # calculate estimated distance between two points
        return abs((x2 - x) + (y2 - y))
def build_scheme(sequences):
    s = Scheme()
    total_cnt = sum(sequences)
    input_node = prev_start = total_cnt - sequences[-1]
    current = 0
    for length in sequences:
        last = current + length - 1
        for current in range(current, last):
            s.connect(str(current) + 'L', str(current + 1) + 'L')
            s.connect(str(current) + 'R', str(current + 1) + 'R')
        current = last
        s.connect(str(current) + 'L', str(prev_start) + 'L')
        s.connect(str(current) + 'R', str(prev_start) + 'R')
        current = last + 1
        prev_start = current - length
    s.connect(str(sequences[0] - 1) + 'L', 'X')
    s.connect('X', str(input_node) + 'L')
    #print s.to
    #print s.from_
    s.validate()
    return s
예제 #23
0
import json
from scheme import Scheme

filename = "/Users/mattlavis/sites and projects/1. Online Tariff/ott prototype/app/data/roo/uk/roo_schemes_uk.json"

f = open(filename)
data = json.load(f)
schemes = data["schemes"]
for scheme in schemes:
    s = Scheme(scheme)
    ret = s.validate()
    if ret is not None:
        print(ret)
예제 #24
0
class Ui_SecretSharingEncryption(object):
    def browse_img(self):
        while True:
            pname, _filter = QtWidgets.QFileDialog.getOpenFileName(
                None, "Select an image", '.',
                "(*.tif *.tiff *.jpg *.jpeg *.gif *.png *.bmp *.eps *.raw *.cr2 "
                "*.nef *.orf *.sr2)")
            print(pname)
            if pname is not None:
                break
        image_profile = QtGui.QImage(pname)  # QImage object
        image_profile = image_profile.scaled(
            331,
            251,
            aspectRatioMode=QtCore.Qt.KeepAspectRatio,
            transformMode=QtCore.Qt.SmoothTransformation
        )  # scaling the image to 331x251 and preserving the aspect ratio
        self.label_29.setPixmap(QtGui.QPixmap.fromImage(image_profile))
        self.path_image = pname
        self.dir_name = path.dirname(pname)

    def encrypt_img(self):
        self.listWidget.clear()
        if self.label_29.pixmap() is None:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Please enter a picture")
            self.error_message.exec_()
        elif self.spinBox.value() == 0 or self.spinBox.value(
        ) < self.spinBox_2.value() or self.spinBox_2.value(
        ) == 0 or self.spinBox.value() < 2 or self.spinBox_2.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        else:
            self.img_name, self.ext = path.splitext(self.path_image)
            t1 = datetime.now()
            pic = Image.open(self.path_image)
            matrix = np.array(pic, np.int32)
            self.sharesRGB = split_parts_list(self.spinBox.value(),
                                              self.spinBox_2.value(), 257,
                                              matrix, self.path_image)
            print("Time to create divisions: ")
            print((datetime.now() - t1).seconds)
            self.label_5.setText(self.dir_name)
            i = 0
            for v in range(self.spinBox.value()):
                share_path = self.img_name + "_share" + str(i) + ".png"
                i += 1
                self.listWidget.addItem(share_path)

    def encrypt_text(self):
        self.listWidget_4.clear()
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Please enter text for encryption")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        else:
            self.secret_text = self.textEdit.toPlainText()
            text = [ord(c) for c in self.secret_text]
            self.glavna_lista = [[] for i in range(len(self.secret_text))]
            shares, lista = [], []
            for el in text:
                s = Scheme(el, self.spinBox_4.value(), self.spinBox_3.value(),
                           127)
                shares = s.construct_shares()
                lista.append(shares)

            print(lista)
            self.text_shares = lista
            words_list = [''] * self.spinBox_4.value()
            for dic in lista:
                dict_variable = {}
                counter = 0
                for (key, value) in dic.items():
                    if value < 32:
                        dict_variable[key] = spec_chars[value]
                        words_list[counter] += dict_variable[key]
                    else:
                        dict_variable[key] = chr(value)
                        words_list[counter] += dict_variable[key]
                    counter += 1
                print(dict_variable)
            print(words_list)

            for word in words_list:
                self.listWidget_4.addItem(word)

    def encrypt_number(self):
        self.listWidget_6.clear()
        if self.spinBox_5.value() == 0:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Please enter the encryption number")
            self.error_message.exec_()
        elif self.spinBox_12.value() == 0 or self.spinBox_12.value(
        ) < self.spinBox_11.value() or self.spinBox_11.value(
        ) == 0 or self.spinBox_12.value() < 2 or self.spinBox_11.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        else:
            secret = self.spinBox_5.value()
            self.secret_number = Scheme(secret, self.spinBox_12.value(),
                                        self.spinBox_11.value(),
                                        5000003863)  # 5000003863 2147483869
            self.shares_number = self.secret_number.construct_shares()
            for sh in self.shares_number:
                self.listWidget_6.addItem(str(self.shares_number[sh]))
            self.inputs = []

    def add_share(self):
        if self.label_29.pixmap() is None:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error", "Image not encrypted")
            self.error_message.exec_()
        elif self.spinBox.value() == 0 or self.spinBox.value(
        ) < self.spinBox_2.value() or self.spinBox_2.value(
        ) == 0 or self.spinBox.value() < 3 or self.spinBox_2.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        else:
            imgs = []
            for i in range(self.spinBox_2.value()):
                pname, _filter = QtWidgets.QFileDialog.getOpenFileName(
                    None, "Select an Image", '', "(*.png)")
                if pname is not None and pname is not "":
                    imgs.append(pname)
                    self.listWidget_2.addItem(pname)
            self.shares_for_reconstruction = imgs

    def add_text_share(self):
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Please enter text for encryption")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        else:
            word = self.textEdit_3.toPlainText()
            self.listWidget_5.addItem(word)
            self.textEdit_3.clear()

            counter = 0
            for el in word:
                ord_el = int(ord(el))
                if ord_el > 126:
                    self.glavna_lista[counter].append(spec_chars_key[el])
                else:
                    self.glavna_lista[counter].append(ord_el)
                counter += 1

    def add_number_share(self):
        self.inputs.append(self.spinBox_13.value())
        self.listWidget_7.addItem(str(self.spinBox_13.value()))

    def decrypt_images(self):
        if self.label_29.pixmap() is None:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error", "Image not encrypted")
            self.error_message.exec_()
        elif self.spinBox.value() == 0 or self.spinBox.value(
        ) < self.spinBox_2.value() or self.spinBox_2.value(
        ) == 0 or self.spinBox.value() < 3 or self.spinBox_2.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        elif self.listWidget_2.count() < self.spinBox_2.value():
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Not enough images entered")
            self.error_message.exec_()
        else:
            matrix = reconstruct_image(self.shares_for_reconstruction,
                                       self.spinBox_2.value(), 257,
                                       self.sharesRGB)
            new_img = Image.fromarray(matrix.astype('uint8'), 'RGB')
            new_img.save(self.img_name + "_SECRET" + self.ext)
            image_profile = QtGui.QImage(self.img_name + "_SECRET" +
                                         self.ext)  # QImage object
            image_profile = image_profile.scaled(
                331,
                251,
                aspectRatioMode=QtCore.Qt.KeepAspectRatio,
                transformMode=QtCore.Qt.SmoothTransformation
            )  # scaling the image to 331x251 and preserving the aspect ratio
            self.label_30.setPixmap(QtGui.QPixmap.fromImage(image_profile))
            self.listWidget_2.clear()

    def decrypt_text(self):
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Please enter text for encryption")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Some of the number of divisions is not good")
            self.error_message.exec_()
        elif self.listWidget_5.count() < self.spinBox_3.value():
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Error",
                "Not enough parts entered")
            self.error_message.exec_()
        else:
            reconstructed_secret = ""
            b = 0
            for dic in self.text_shares:
                reconstructed_secret += chr(
                    int(
                        Scheme.reconstruct_secret_img(dic,
                                                      self.glavna_lista[b],
                                                      self.spinBox_3.value(),
                                                      127)))
                b += 1
            self.textEdit_2.setText(reconstructed_secret)
            self.listWidget_5.clear()
            self.glavna_lista = [[] for i in range(len(self.secret_text))]

    def decrypt_number(self):
        returned_secret = int(
            round(
                self.secret_number.reconstruct_secret(
                    self.shares_number, self.inputs, self.spinBox_11.value(),
                    5000003863)))  # 5000003863 2147483869
        print(returned_secret)
        self.lcdNumber.display(returned_secret)
        self.listWidget_7.clear()
        self.inputs = []

    def setupUi(self, SecretSharingEncryption):
        SecretSharingEncryption.setObjectName("SecretSharingEncryption")
        SecretSharingEncryption.setEnabled(True)
        SecretSharingEncryption.resize(1121, 854)
        self.centralwidget = QtWidgets.QWidget(SecretSharingEncryption)
        self.centralwidget.setObjectName("centralwidget")
        self.toolBox = QtWidgets.QToolBox(self.centralwidget)
        self.toolBox.setGeometry(QtCore.QRect(0, 0, 1121, 821))
        self.toolBox.setFrameShadow(QtWidgets.QFrame.Plain)
        self.toolBox.setMidLineWidth(0)
        self.toolBox.setObjectName("toolBox")
        self.image = QtWidgets.QWidget()
        self.image.setObjectName("image")

        self.pushButton = QtWidgets.QPushButton(self.image)
        self.pushButton.setGeometry(QtCore.QRect(10, 260, 331, 31))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.browse_img)
        self.pushButton.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar = QtWidgets.QProgressBar(self.image)
        self.progressBar.setGeometry(QtCore.QRect(420, 10, 271, 23))
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.progressBar.setStyleSheet("border:1px solid #e6f5ff;")
        self.pushButton_2 = QtWidgets.QPushButton(self.image)
        self.pushButton_2.setGeometry(QtCore.QRect(420, 220, 241, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_2.clicked.connect(self.encrypt_img)
        self.pushButton_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.label = QtWidgets.QLabel(self.image)
        self.label.setGeometry(QtCore.QRect(420, 50, 231, 16))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.image)
        self.label_2.setGeometry(QtCore.QRect(420, 120, 231, 16))
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.spinBox = QtWidgets.QSpinBox(self.image)
        self.spinBox.setGeometry(QtCore.QRect(490, 70, 81, 31))
        self.spinBox.setObjectName("spinBox")
        self.spinBox.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_2 = QtWidgets.QSpinBox(self.image)
        self.spinBox_2.setGeometry(QtCore.QRect(490, 140, 81, 31))
        self.spinBox_2.setObjectName("spinBox_2")
        self.spinBox_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar_2 = QtWidgets.QProgressBar(self.image)
        self.progressBar_2.setGeometry(QtCore.QRect(420, 430, 271, 23))
        self.progressBar_2.setProperty("value", 0)
        self.progressBar_2.setObjectName("progressBar_2")
        self.progressBar_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_3 = QtWidgets.QLabel(self.image)
        self.label_3.setGeometry(QtCore.QRect(780, 300, 331, 20))
        self.label_3.setScaledContents(False)
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.scrollArea = QtWidgets.QScrollArea(self.image)
        self.scrollArea.setGeometry(QtCore.QRect(780, 90, 331, 216))
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollArea.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 329, 214))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.horizontalLayout = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.listWidget = QtWidgets.QListWidget(self.scrollAreaWidgetContents)
        self.listWidget.setObjectName("listWidget")
        self.horizontalLayout.addWidget(self.listWidget)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.label_4 = QtWidgets.QLabel(self.image)
        self.label_4.setGeometry(QtCore.QRect(780, 0, 111, 41))
        self.label_4.setObjectName("label_4")
        self.scrollArea_12 = QtWidgets.QScrollArea(self.image)
        self.scrollArea_12.setGeometry(QtCore.QRect(900, 0, 211, 61))
        self.scrollArea_12.setWidgetResizable(True)
        self.scrollArea_12.setObjectName("scrollArea_12")
        self.scrollArea_12.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_12 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_12.setGeometry(
            QtCore.QRect(0, 0, 209, 59))
        self.scrollAreaWidgetContents_12.setObjectName(
            "scrollAreaWidgetContents_12")
        self.verticalLayout = QtWidgets.QVBoxLayout(
            self.scrollAreaWidgetContents_12)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_5 = QtWidgets.QLabel(self.scrollAreaWidgetContents_12)
        self.label_5.setObjectName("label_5")
        self.verticalLayout.addWidget(self.label_5)
        self.scrollArea_12.setWidget(self.scrollAreaWidgetContents_12)
        self.pushButton_4 = QtWidgets.QPushButton(self.image)
        self.pushButton_4.setGeometry(QtCore.QRect(420, 690, 241, 28))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_4.clicked.connect(self.decrypt_images)
        self.pushButton_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollArea_2 = QtWidgets.QScrollArea(self.image)
        self.scrollArea_2.setGeometry(QtCore.QRect(350, 470, 381, 161))
        self.scrollArea_2.setWidgetResizable(True)
        self.scrollArea_2.setObjectName("scrollArea_2")
        self.scrollArea_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_2.setGeometry(
            QtCore.QRect(0, 0, 379, 159))
        self.scrollAreaWidgetContents_2.setObjectName(
            "scrollAreaWidgetContents_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_2)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.listWidget_2 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_2)
        self.listWidget_2.setObjectName("listWidget_2")
        self.horizontalLayout_2.addWidget(self.listWidget_2)
        self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
        self.label_6 = QtWidgets.QLabel(self.image)
        self.label_6.setGeometry(QtCore.QRect(370, 630, 341, 20))
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.pushButton_3 = QtWidgets.QPushButton(self.image)
        self.pushButton_3.setGeometry(QtCore.QRect(240, 477, 93, 141))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_3.clicked.connect(self.add_share)
        self.pushButton_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_7 = QtWidgets.QLabel(self.image)
        self.label_7.setGeometry(QtCore.QRect(780, 440, 331, 21))
        self.label_7.setAlignment(QtCore.Qt.AlignCenter)
        self.label_7.setObjectName("label_7")
        self.label_29 = QtWidgets.QLabel(self.image)
        self.label_29.setGeometry(QtCore.QRect(10, 0, 331, 251))
        self.label_29.setObjectName("label_29")
        self.label_30 = QtWidgets.QLabel(self.image)
        self.label_30.setGeometry(QtCore.QRect(780, 470, 331, 251))
        self.label_30.setObjectName("label_30")
        self.toolBox.addItem(self.image, " Image ")
        self.Text = QtWidgets.QWidget()
        self.Text.setObjectName("Text")
        self.textEdit = QtWidgets.QTextEdit(self.Text)
        self.textEdit.setGeometry(QtCore.QRect(20, 50, 331, 301))
        self.textEdit.setObjectName("textEdit")
        self.textEdit.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_8 = QtWidgets.QLabel(self.Text)
        self.label_8.setGeometry(QtCore.QRect(20, 20, 331, 20))
        self.label_8.setAlignment(QtCore.Qt.AlignCenter)
        self.label_8.setObjectName("label_8")
        self.pushButton_5 = QtWidgets.QPushButton(self.Text)
        self.pushButton_5.setGeometry(QtCore.QRect(430, 320, 241, 28))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_5.clicked.connect(self.encrypt_text)
        self.pushButton_5.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_3 = QtWidgets.QSpinBox(self.Text)
        self.spinBox_3.setGeometry(QtCore.QRect(500, 210, 81, 31))
        self.spinBox_3.setObjectName("spinBox_3")
        self.spinBox_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_4 = QtWidgets.QSpinBox(self.Text)
        self.spinBox_4.setGeometry(QtCore.QRect(500, 130, 81, 31))
        self.spinBox_4.setObjectName("spinBox_4")
        self.spinBox_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_9 = QtWidgets.QLabel(self.Text)
        self.label_9.setGeometry(QtCore.QRect(430, 110, 231, 16))
        self.label_9.setAlignment(QtCore.Qt.AlignCenter)
        self.label_9.setObjectName("label_9")
        self.progressBar_3 = QtWidgets.QProgressBar(self.Text)
        self.progressBar_3.setGeometry(QtCore.QRect(430, 50, 271, 23))
        self.progressBar_3.setProperty("value", 0)
        self.progressBar_3.setObjectName("progressBar_3")
        self.progressBar_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_10 = QtWidgets.QLabel(self.Text)
        self.label_10.setGeometry(QtCore.QRect(430, 190, 231, 16))
        self.label_10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_10.setObjectName("label_10")
        self.label_11 = QtWidgets.QLabel(self.Text)
        self.label_11.setGeometry(QtCore.QRect(750, 300, 351, 20))
        self.label_11.setScaledContents(False)
        self.label_11.setAlignment(QtCore.Qt.AlignCenter)
        self.label_11.setObjectName("label_11")
        self.pushButton_6 = QtWidgets.QPushButton(self.Text)
        self.pushButton_6.setGeometry(QtCore.QRect(430, 690, 241, 28))
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_6.clicked.connect(self.decrypt_text)
        self.pushButton_6.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar_4 = QtWidgets.QProgressBar(self.Text)
        self.progressBar_4.setGeometry(QtCore.QRect(430, 420, 271, 23))
        self.progressBar_4.setProperty("value", 0)
        self.progressBar_4.setObjectName("progressBar_4")
        self.progressBar_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_12 = QtWidgets.QLabel(self.Text)
        self.label_12.setGeometry(QtCore.QRect(750, 390, 351, 20))
        self.label_12.setAlignment(QtCore.Qt.AlignCenter)
        self.label_12.setObjectName("label_12")
        self.textEdit_2 = QtWidgets.QTextEdit(self.Text)
        self.textEdit_2.setGeometry(QtCore.QRect(750, 420, 351, 301))
        self.textEdit_2.setObjectName("textEdit_2")
        self.textEdit_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.pushButton_7 = QtWidgets.QPushButton(self.Text)
        self.pushButton_7.setGeometry(QtCore.QRect(20, 690, 331, 28))
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_7.clicked.connect(self.add_text_share)
        self.pushButton_7.setStyleSheet("border:1px solid #e6f5ff;")
        self.textEdit_3 = QtWidgets.QTextEdit(self.Text)
        self.textEdit_3.setGeometry(QtCore.QRect(20, 450, 331, 231))
        self.textEdit_3.setObjectName("textEdit_3")
        self.textEdit_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollArea_3 = QtWidgets.QScrollArea(self.Text)
        self.scrollArea_3.setGeometry(QtCore.QRect(740, 40, 361, 261))
        self.scrollArea_3.setWidgetResizable(True)
        self.scrollArea_3.setObjectName("scrollArea_3")
        self.scrollArea_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_13 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_13.setGeometry(
            QtCore.QRect(0, 0, 359, 259))
        self.scrollAreaWidgetContents_13.setObjectName(
            "scrollAreaWidgetContents_13")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_13)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.listWidget_4 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_13)
        self.listWidget_4.setObjectName("listWidget_4")
        self.horizontalLayout_4.addWidget(self.listWidget_4)
        self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_13)
        self.scrollArea_4 = QtWidgets.QScrollArea(self.Text)
        self.scrollArea_4.setGeometry(QtCore.QRect(380, 450, 351, 231))
        self.scrollArea_4.setWidgetResizable(True)
        self.scrollArea_4.setObjectName("scrollArea_4")
        self.scrollArea_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_4.setGeometry(
            QtCore.QRect(0, 0, 349, 229))
        self.scrollAreaWidgetContents_4.setObjectName(
            "scrollAreaWidgetContents_4")
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_4)
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.listWidget_5 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_4)
        self.listWidget_5.setObjectName("listWidget_5")
        self.horizontalLayout_5.addWidget(self.listWidget_5)
        self.scrollArea_4.setWidget(self.scrollAreaWidgetContents_4)
        self.toolBox.addItem(self.Text, " Тext ")
        self.Number = QtWidgets.QWidget()
        self.Number.setObjectName("Number")
        self.spinBox_5 = QtWidgets.QSpinBox(self.Number)
        self.spinBox_5.setGeometry(QtCore.QRect(20, 90, 381, 41))
        self.spinBox_5.setStyleSheet("border:1px solid #e6f5ff;")
        font = QtGui.QFont()
        font.setPointSize(16)
        self.spinBox_5.setFont(font)
        self.spinBox_5.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_5.setObjectName("spinBox_5")
        self.spinBox_5.setMaximum(2147483647)
        self.label_13 = QtWidgets.QLabel(self.Number)
        self.label_13.setGeometry(QtCore.QRect(20, 20, 381, 41))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_13.setFont(font)
        self.label_13.setAlignment(QtCore.Qt.AlignCenter)
        self.label_13.setObjectName("label_13")
        self.pushButton_16 = QtWidgets.QPushButton(self.Number)
        self.pushButton_16.setGeometry(QtCore.QRect(450, 250, 241, 28))
        self.pushButton_16.setObjectName("pushButton_16")
        self.pushButton_16.clicked.connect(self.encrypt_number)
        self.pushButton_16.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_27 = QtWidgets.QLabel(self.Number)
        self.label_27.setGeometry(QtCore.QRect(450, 160, 231, 16))
        self.label_27.setAlignment(QtCore.Qt.AlignCenter)
        self.label_27.setObjectName("label_27")
        self.label_28 = QtWidgets.QLabel(self.Number)
        self.label_28.setGeometry(QtCore.QRect(450, 80, 231, 16))
        self.label_28.setAlignment(QtCore.Qt.AlignCenter)
        self.label_28.setObjectName("label_28")
        self.spinBox_11 = QtWidgets.QSpinBox(self.Number)
        self.spinBox_11.setGeometry(QtCore.QRect(520, 180, 81, 31))
        self.spinBox_11.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_11.setObjectName("spinBox_11")
        self.spinBox_11.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar_9 = QtWidgets.QProgressBar(self.Number)
        self.progressBar_9.setGeometry(QtCore.QRect(450, 20, 271, 23))
        self.progressBar_9.setProperty("value", 0)
        self.progressBar_9.setObjectName("progressBar_9")
        self.progressBar_9.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_12 = QtWidgets.QSpinBox(self.Number)
        self.spinBox_12.setGeometry(QtCore.QRect(520, 100, 81, 31))
        self.spinBox_12.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_12.setObjectName("spinBox_12")
        self.spinBox_12.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_13 = QtWidgets.QSpinBox(self.Number)
        self.spinBox_13.setGeometry(QtCore.QRect(20, 480, 351, 31))
        self.spinBox_13.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_13.setObjectName("spinBox_13")
        self.spinBox_13.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_13.setMaximum(2147483647)
        self.pushButton_17 = QtWidgets.QPushButton(self.Number)
        self.pushButton_17.setGeometry(QtCore.QRect(20, 530, 351, 41))
        self.pushButton_17.setObjectName("pushButton_17")
        self.pushButton_17.clicked.connect(self.add_number_share)
        self.pushButton_17.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollArea_5 = QtWidgets.QScrollArea(self.Number)
        self.scrollArea_5.setGeometry(QtCore.QRect(740, 20, 361, 261))
        self.scrollArea_5.setWidgetResizable(True)
        self.scrollArea_5.setObjectName("scrollArea_5")
        self.scrollArea_5.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_5 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_5.setGeometry(
            QtCore.QRect(0, 0, 359, 259))
        self.scrollAreaWidgetContents_5.setObjectName(
            "scrollAreaWidgetContents_5")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_5)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.listWidget_6 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_5)
        self.listWidget_6.setObjectName("listWidget_6")
        self.horizontalLayout_6.addWidget(self.listWidget_6)
        self.scrollArea_5.setWidget(self.scrollAreaWidgetContents_5)
        self.scrollArea_11 = QtWidgets.QScrollArea(self.Number)
        self.scrollArea_11.setGeometry(QtCore.QRect(390, 470, 351, 251))
        self.scrollArea_11.setWidgetResizable(True)
        self.scrollArea_11.setObjectName("scrollArea_11")
        self.scrollArea_11.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_11 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_11.setGeometry(
            QtCore.QRect(0, 0, 349, 249))
        self.scrollAreaWidgetContents_11.setObjectName(
            "scrollAreaWidgetContents_11")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_11)
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.listWidget_7 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_11)
        self.listWidget_7.setObjectName("listWidget_7")
        self.horizontalLayout_7.addWidget(self.listWidget_7)
        self.scrollArea_11.setWidget(self.scrollAreaWidgetContents_11)
        self.pushButton_18 = QtWidgets.QPushButton(self.Number)
        self.pushButton_18.setGeometry(QtCore.QRect(20, 650, 351, 41))
        self.pushButton_18.setObjectName("pushButton_18")
        self.pushButton_18.clicked.connect(self.decrypt_number)
        self.pushButton_18.setStyleSheet("border:1px solid #e6f5ff;")
        self.lcdNumber = QtWidgets.QLCDNumber(self.Number)
        self.lcdNumber.setGeometry(QtCore.QRect(760, 550, 341, 121))
        self.lcdNumber.setFrameShape(QtWidgets.QFrame.Panel)
        self.lcdNumber.setSmallDecimalPoint(False)
        self.lcdNumber.setDigitCount(20)
        self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
        self.lcdNumber.setProperty("value", -1.0)
        self.lcdNumber.setProperty("intValue", -1)
        self.lcdNumber.setObjectName("lcdNumber")
        self.lcdNumber.setStyleSheet("border:1px solid #e6f5ff;")
        self.toolBox.addItem(self.Number, " Number ")
        SecretSharingEncryption.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(SecretSharingEncryption)
        self.statusbar.setObjectName("statusbar")
        SecretSharingEncryption.setStatusBar(self.statusbar)

        self.retranslateUi(SecretSharingEncryption)
        QtCore.QMetaObject.connectSlotsByName(SecretSharingEncryption)

    def retranslateUi(self, SecretSharingEncryption):
        _translate = QtCore.QCoreApplication.translate
        SecretSharingEncryption.setWindowTitle(
            _translate("SecretSharingEncryption", "SecretSharingEncryption"))
        self.toolBox.setWhatsThis(
            _translate("SecretSharingEncryption",
                       "<html><head/><body><p><br/></p></body></html>"))
        self.image.setWhatsThis(
            _translate(
                "SecretSharingEncryption",
                "<html><head/><body><p>Image Encryption/Decryption</p></body></html>"
            ))
        self.pushButton.setText(
            _translate("SecretSharingEncryption", "Select an Image"))
        self.pushButton_2.setText(
            _translate("SecretSharingEncryption", "Encrypt"))
        self.label.setText(
            _translate("SecretSharingEncryption", "Number of Divisions:"))
        self.label_2.setText(
            _translate("SecretSharingEncryption",
                       "Necessary parts for reconstruction:"))
        self.label_3.setText(
            _translate("SecretSharingEncryption", "Parts of secret image"))
        self.label_4.setText(
            _translate("SecretSharingEncryption", "Location of Divisions:"))
        self.label_5.setText(_translate("SecretSharingEncryption", "Link"))
        self.label_5.setStyleSheet("color: #e6f5ff")
        self.pushButton_4.setText(
            _translate("SecretSharingEncryption", "Decrypt"))
        self.label_6.setText(
            _translate("SecretSharingEncryption", "Selected Parts"))
        self.pushButton_3.setText(
            _translate("SecretSharingEncryption", "Insert Part"))
        self.label_7.setText(
            _translate("SecretSharingEncryption", "Decryption result"))
        self.Text.setWhatsThis(
            _translate(
                "SecretSharingEncryption",
                "<html><head/><body><p>Encryption and decryption of the entered number</p></body></html>"
            ))
        self.label_8.setText(
            _translate("SecretSharingEncryption", "Text for encryption"))
        self.pushButton_5.setText(
            _translate("SecretSharingEncryption", "Encrypt"))
        self.label_9.setText(
            _translate("SecretSharingEncryption", "Number of Divisions:"))
        self.label_10.setText(
            _translate("SecretSharingEncryption",
                       "Necessary parts for reconstruction:"))
        self.label_11.setText(
            _translate("SecretSharingEncryption", "Parts of secret text"))
        self.pushButton_6.setText(
            _translate("SecretSharingEncryption", "Decrypt"))
        self.label_12.setText(
            _translate("SecretSharingEncryption",
                       "Text obtained from decryption"))
        self.pushButton_7.setText(
            _translate("SecretSharingEncryption", "Add a part"))
        self.Number.setWhatsThis(
            _translate(
                "SecretSharingEncryption",
                "<html><head/><body><p>Encryption and decryption of the entered Text</p></body></html>"
            ))
        self.label_13.setText(
            _translate("SecretSharingEncryption", "Encryption Number"))
        self.pushButton_16.setText(
            _translate("SecretSharingEncryption", "Encrypt"))
        self.label_27.setText(
            _translate("SecretSharingEncryption",
                       "Necessary parts for reconstruction:"))
        self.label_28.setText(
            _translate("SecretSharingEncryption", "Number of Divisions:"))
        self.pushButton_17.setText(
            _translate("SecretSharingEncryption", "Add a part"))
        self.pushButton_18.setText(
            _translate("SecretSharingEncryption", "Decrypt"))
예제 #25
0
def codegen(args: Namespace, scheme: Scheme, app: Application) -> None:
    # Collect the paths of the generated files
    generated_paths: List[Path] = []

    # Generate loop hosts
    for i, loop in enumerate(app.loops, 1):
        # Generate loop host source
        source, extension = scheme.genLoopHost(loop, i)

        # Form output file path
        path = Path(
            args.out,
            f'{args.prefix}_{scheme.opt.name}_{loop.name}.{extension}')

        # Write the generated source file
        with open(path, 'w') as file:
            file.write(
                f'\n{scheme.lang.com_delim} Auto-generated at {datetime.now()} by opcg\n\n'
            )
            file.write(source)
            generated_paths.append(path)

            if args.verbose:
                print(f'Generated loop host {i} of {len(app.loops)}: {path}')

    # Generate program translations
    for i, program in enumerate(app.programs, 1):
        # Read the raw source file
        with open(program.path, 'r') as raw_file:

            # Generate the source translation
            source = scheme.lang.translateProgram(raw_file.read(), program,
                                                  args.soa)

            # Form output file path
            new_path = Path(args.out,
                            f'{args.prefix}_{os.path.basename(program.path)}')

            # Write the translated source file
            with open(new_path, 'w') as new_file:
                new_file.write(
                    f'\n{scheme.lang.com_delim} Auto-generated at {datetime.now()} by opcg\n\n'
                )
                new_file.write(source)
                generated_paths.append(new_path)

                if args.verbose:
                    print(
                        f'Translated program  {i} of {len(args.file_paths)}: {new_path}'
                    )

    # Generate kernel translations
    if scheme.opt.kernel_translation:
        for i, kernel in enumerate(app.kernels, 1):
            # Read the raw source file
            with open(kernel.path, 'r') as raw_file:

                # Generate the source translation
                source = scheme.translateKernel(raw_file.read(), kernel, app)

                # Form output file path
                new_path = Path(
                    args.out,
                    f'{kernel}_{scheme.opt.name}.{scheme.lang.include_ext}')

                # Write the translated source file
                with open(new_path, 'w') as new_file:
                    new_file.write(source)

                    if args.verbose:
                        print(
                            f'Translated kernel   {i} of {len(app.kernels)}: {new_path}'
                        )

    # Generate Makefile
    if args.makefile and scheme.make_stub_template:
        path = Path(args.out, 'Makefile')

        # Check if the Make target has already been defined
        found = False
        if path.is_file():
            with open(path, 'r') as file:
                found = bool(
                    re.search(f'^{scheme.opt.name}:', file.read(),
                              re.MULTILINE))

        # Append the stub if not found
        if not found:
            with open(path, 'a') as file:
                stub = scheme.genMakeStub(generated_paths)

                file.write(stub)

        if args.verbose:
            print(f'Make target "{scheme.opt.name}" already exists'
                  if found else 'Appended Make target stub')
예제 #26
0
class Ui_ShamirSecretSharing(object):
    def browse_img(self):
        while True:
            pname, _filter = QtWidgets.QFileDialog.getOpenFileName(
                None, "Odaberi sliku", '.',
                "(*.tif *.tiff *.jpg *.jpeg *.gif *.png *.bmp *.eps *.raw *.cr2 "
                "*.nef *.orf *.sr2)")
            print(pname)
            if pname is not None:
                break
        image_profile = QtGui.QImage(pname)  # QImage objekat
        image_profile = image_profile.scaled(
            331,
            251,
            aspectRatioMode=QtCore.Qt.KeepAspectRatio,
            transformMode=QtCore.Qt.SmoothTransformation
        )  # skaliranje slike na 331x251 i ocuvanje aspect ratio
        self.label_29.setPixmap(QtGui.QPixmap.fromImage(image_profile))
        self.path_image = pname
        self.dir_name = path.dirname(pname)

    def encrypt_img(self):
        self.listWidget.clear()
        if self.label_29.pixmap() is None:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Молим унесите слику")
            self.error_message.exec_()
        elif self.spinBox.value() == 0 or self.spinBox.value(
        ) < self.spinBox_2.value() or self.spinBox_2.value(
        ) == 0 or self.spinBox.value() < 2 or self.spinBox_2.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        else:
            self.img_name, self.ext = path.splitext(self.path_image)
            t1 = datetime.now()
            pic = Image.open(self.path_image)
            matrix = np.array(pic, np.int32)
            self.sharesRGB = split_parts_list(self.spinBox.value(),
                                              self.spinBox_2.value(), 257,
                                              matrix, self.path_image)
            print("Vrijeme kreiranja podjela: ")
            print((datetime.now() - t1).seconds)
            self.label_5.setText(self.dir_name)
            i = 0
            for v in range(self.spinBox.value()):
                share_path = self.img_name + "_share" + str(i) + ".png"
                i += 1
                self.listWidget.addItem(share_path)

    def encrypt_text(self):
        self.listWidget_4.clear()
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Молим унесите текст за енкрипцију")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        else:
            self.secret_text = self.textEdit.toPlainText()
            text = [ord(c) for c in self.secret_text]
            self.glavna_lista = [[] for i in range(len(self.secret_text))]
            shares, lista = [], []
            for el in text:
                s = Scheme(el, self.spinBox_4.value(), self.spinBox_3.value(),
                           127)
                shares = s.construct_shares()
                lista.append(shares)

            print(lista)
            self.text_shares = lista
            words_list = [''] * self.spinBox_4.value()
            for dic in lista:
                dict_variable = {}
                counter = 0
                for (key, value) in dic.items():
                    if value < 32:
                        dict_variable[key] = spec_chars[value]
                        words_list[counter] += dict_variable[key]
                    else:
                        dict_variable[key] = chr(value)
                        words_list[counter] += dict_variable[key]
                    counter += 1
                print(dict_variable)
            print(words_list)

            for word in words_list:
                self.listWidget_4.addItem(word)

    def encrypt_number(self):
        self.listWidget_6.clear()
        if self.spinBox_5.value() == 0:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Молим унесите број за енкрипцију")
            self.error_message.exec_()
        elif self.spinBox_12.value() == 0 or self.spinBox_12.value(
        ) < self.spinBox_11.value() or self.spinBox_11.value(
        ) == 0 or self.spinBox_12.value() < 2 or self.spinBox_11.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        else:
            secret = self.spinBox_5.value()
            self.secret_number = Scheme(secret, self.spinBox_12.value(),
                                        self.spinBox_11.value(),
                                        5000003863)  # 5000003863 2147483869
            self.shares_number = self.secret_number.construct_shares()
            for sh in self.shares_number:
                self.listWidget_6.addItem(str(self.shares_number[sh]))
            self.inputs = []

    def add_share(self):
        if self.label_29.pixmap() is None:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Слика није енкриптована")
            self.error_message.exec_()
        elif self.spinBox.value() == 0 or self.spinBox.value(
        ) < self.spinBox_2.value() or self.spinBox_2.value(
        ) == 0 or self.spinBox.value() < 3 or self.spinBox_2.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        else:
            imgs = []
            for i in range(self.spinBox_2.value()):
                pname, _filter = QtWidgets.QFileDialog.getOpenFileName(
                    None, "Odaberi sliku", '', "(*.png)")
                if pname is not None and pname is not "":
                    imgs.append(pname)
                    self.listWidget_2.addItem(pname)
            self.shares_for_reconstruction = imgs

    def add_text_share(self):
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Молим унесите текст за енкрипцију")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        else:
            word = self.textEdit_3.toPlainText()
            self.listWidget_5.addItem(word)
            self.textEdit_3.clear()

            counter = 0
            for el in word:
                ord_el = int(ord(el))
                if ord_el > 126:
                    self.glavna_lista[counter].append(spec_chars_key[el])
                else:
                    self.glavna_lista[counter].append(ord_el)
                counter += 1

    def add_number_share(self):
        self.inputs.append(self.spinBox_13.value())
        self.listWidget_7.addItem(str(self.spinBox_13.value()))

    def decrypt_images(self):
        if self.label_29.pixmap() is None:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Слика није енкриптована")
            self.error_message.exec_()
        elif self.spinBox.value() == 0 or self.spinBox.value(
        ) < self.spinBox_2.value() or self.spinBox_2.value(
        ) == 0 or self.spinBox.value() < 3 or self.spinBox_2.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        elif self.listWidget_2.count() < self.spinBox_2.value():
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Није унешено довољно слика")
            self.error_message.exec_()
        else:
            matrix = reconstruct_image(self.shares_for_reconstruction,
                                       self.spinBox_2.value(), 257,
                                       self.sharesRGB)
            new_img = Image.fromarray(matrix.astype('uint8'), 'RGB')
            new_img.save(self.img_name + "_SECRET" + self.ext)
            image_profile = QtGui.QImage(self.img_name + "_SECRET" +
                                         self.ext)  # QImage objekat
            image_profile = image_profile.scaled(
                331,
                251,
                aspectRatioMode=QtCore.Qt.KeepAspectRatio,
                transformMode=QtCore.Qt.SmoothTransformation
            )  # skaliranje slike na 331x251 i ocuvanje aspect ratio
            self.label_30.setPixmap(QtGui.QPixmap.fromImage(image_profile))
            self.listWidget_2.clear()

    def decrypt_text(self):
        if self.textEdit.toPlainText() is None or self.textEdit.toPlainText(
        ) == "":
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Молим унесите текст за енкрипцију")
            self.error_message.exec_()
        elif self.spinBox_4.value() == 0 or self.spinBox_4.value(
        ) < self.spinBox_3.value() or self.spinBox_3.value(
        ) == 0 or self.spinBox_3.value() < 2 or self.spinBox_4.value() < 2:
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Неки од броја подјела није добар")
            self.error_message.exec_()
        elif self.listWidget_5.count() < self.spinBox_3.value():
            self.error_message = QtWidgets.QMessageBox(
                QtWidgets.QMessageBox.Critical, "Грешка",
                "Није унешено довољно дијелова")
            self.error_message.exec_()
        else:
            reconstructed_secret = ""
            b = 0
            for dic in self.text_shares:
                reconstructed_secret += chr(
                    int(
                        Scheme.reconstruct_secret_img(dic,
                                                      self.glavna_lista[b],
                                                      self.spinBox_3.value(),
                                                      127)))
                b += 1
            self.textEdit_2.setText(reconstructed_secret)
            self.listWidget_5.clear()
            self.glavna_lista = [[] for i in range(len(self.secret_text))]

    def decrypt_number(self):
        returned_secret = int(
            round(
                self.secret_number.reconstruct_secret(
                    self.shares_number, self.inputs, self.spinBox_11.value(),
                    5000003863)))  # 5000003863 2147483869
        print(returned_secret)
        self.lcdNumber.display(returned_secret)
        self.listWidget_7.clear()
        self.inputs = []

    def setupUi(self, ShamirSecretSharing):
        ShamirSecretSharing.setObjectName("ShamirSecretSharing")
        ShamirSecretSharing.setEnabled(True)
        ShamirSecretSharing.resize(1121, 854)
        self.centralwidget = QtWidgets.QWidget(ShamirSecretSharing)
        self.centralwidget.setObjectName("centralwidget")
        self.toolBox = QtWidgets.QToolBox(self.centralwidget)
        self.toolBox.setGeometry(QtCore.QRect(0, 0, 1121, 821))
        self.toolBox.setFrameShadow(QtWidgets.QFrame.Plain)
        self.toolBox.setMidLineWidth(0)
        self.toolBox.setObjectName("toolBox")
        self.Slika = QtWidgets.QWidget()
        self.Slika.setObjectName("Slika")

        self.pushButton = QtWidgets.QPushButton(self.Slika)
        self.pushButton.setGeometry(QtCore.QRect(10, 260, 331, 31))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.browse_img)
        self.pushButton.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar = QtWidgets.QProgressBar(self.Slika)
        self.progressBar.setGeometry(QtCore.QRect(420, 10, 271, 23))
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.progressBar.setStyleSheet("border:1px solid #e6f5ff;")
        self.pushButton_2 = QtWidgets.QPushButton(self.Slika)
        self.pushButton_2.setGeometry(QtCore.QRect(420, 220, 241, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_2.clicked.connect(self.encrypt_img)
        self.pushButton_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.label = QtWidgets.QLabel(self.Slika)
        self.label.setGeometry(QtCore.QRect(420, 50, 231, 16))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.Slika)
        self.label_2.setGeometry(QtCore.QRect(420, 120, 231, 16))
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.spinBox = QtWidgets.QSpinBox(self.Slika)
        self.spinBox.setGeometry(QtCore.QRect(490, 70, 81, 31))
        self.spinBox.setObjectName("spinBox")
        self.spinBox.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_2 = QtWidgets.QSpinBox(self.Slika)
        self.spinBox_2.setGeometry(QtCore.QRect(490, 140, 81, 31))
        self.spinBox_2.setObjectName("spinBox_2")
        self.spinBox_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar_2 = QtWidgets.QProgressBar(self.Slika)
        self.progressBar_2.setGeometry(QtCore.QRect(420, 430, 271, 23))
        self.progressBar_2.setProperty("value", 0)
        self.progressBar_2.setObjectName("progressBar_2")
        self.progressBar_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_3 = QtWidgets.QLabel(self.Slika)
        self.label_3.setGeometry(QtCore.QRect(780, 300, 331, 20))
        self.label_3.setScaledContents(False)
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.scrollArea = QtWidgets.QScrollArea(self.Slika)
        self.scrollArea.setGeometry(QtCore.QRect(780, 90, 331, 216))
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollArea.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 329, 214))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.horizontalLayout = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.listWidget = QtWidgets.QListWidget(self.scrollAreaWidgetContents)
        self.listWidget.setObjectName("listWidget")
        self.horizontalLayout.addWidget(self.listWidget)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.label_4 = QtWidgets.QLabel(self.Slika)
        self.label_4.setGeometry(QtCore.QRect(780, 0, 111, 41))
        self.label_4.setObjectName("label_4")
        self.scrollArea_12 = QtWidgets.QScrollArea(self.Slika)
        self.scrollArea_12.setGeometry(QtCore.QRect(900, 0, 211, 61))
        self.scrollArea_12.setWidgetResizable(True)
        self.scrollArea_12.setObjectName("scrollArea_12")
        self.scrollArea_12.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_12 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_12.setGeometry(
            QtCore.QRect(0, 0, 209, 59))
        self.scrollAreaWidgetContents_12.setObjectName(
            "scrollAreaWidgetContents_12")
        self.verticalLayout = QtWidgets.QVBoxLayout(
            self.scrollAreaWidgetContents_12)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_5 = QtWidgets.QLabel(self.scrollAreaWidgetContents_12)
        self.label_5.setObjectName("label_5")
        self.verticalLayout.addWidget(self.label_5)
        self.scrollArea_12.setWidget(self.scrollAreaWidgetContents_12)
        self.pushButton_4 = QtWidgets.QPushButton(self.Slika)
        self.pushButton_4.setGeometry(QtCore.QRect(420, 690, 241, 28))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_4.clicked.connect(self.decrypt_images)
        self.pushButton_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollArea_2 = QtWidgets.QScrollArea(self.Slika)
        self.scrollArea_2.setGeometry(QtCore.QRect(350, 470, 381, 161))
        self.scrollArea_2.setWidgetResizable(True)
        self.scrollArea_2.setObjectName("scrollArea_2")
        self.scrollArea_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_2.setGeometry(
            QtCore.QRect(0, 0, 379, 159))
        self.scrollAreaWidgetContents_2.setObjectName(
            "scrollAreaWidgetContents_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_2)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.listWidget_2 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_2)
        self.listWidget_2.setObjectName("listWidget_2")
        self.horizontalLayout_2.addWidget(self.listWidget_2)
        self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
        self.label_6 = QtWidgets.QLabel(self.Slika)
        self.label_6.setGeometry(QtCore.QRect(370, 630, 341, 20))
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.pushButton_3 = QtWidgets.QPushButton(self.Slika)
        self.pushButton_3.setGeometry(QtCore.QRect(240, 477, 93, 141))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_3.clicked.connect(self.add_share)
        self.pushButton_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_7 = QtWidgets.QLabel(self.Slika)
        self.label_7.setGeometry(QtCore.QRect(780, 440, 331, 21))
        self.label_7.setAlignment(QtCore.Qt.AlignCenter)
        self.label_7.setObjectName("label_7")
        self.label_29 = QtWidgets.QLabel(self.Slika)
        self.label_29.setGeometry(QtCore.QRect(10, 0, 331, 251))
        self.label_29.setObjectName("label_29")
        self.label_30 = QtWidgets.QLabel(self.Slika)
        self.label_30.setGeometry(QtCore.QRect(780, 470, 331, 251))
        self.label_30.setObjectName("label_30")
        self.toolBox.addItem(self.Slika, " Слика ")
        self.Tekst = QtWidgets.QWidget()
        self.Tekst.setObjectName("Tekst")
        self.textEdit = QtWidgets.QTextEdit(self.Tekst)
        self.textEdit.setGeometry(QtCore.QRect(20, 50, 331, 301))
        self.textEdit.setObjectName("textEdit")
        self.textEdit.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_8 = QtWidgets.QLabel(self.Tekst)
        self.label_8.setGeometry(QtCore.QRect(20, 20, 331, 20))
        self.label_8.setAlignment(QtCore.Qt.AlignCenter)
        self.label_8.setObjectName("label_8")
        self.pushButton_5 = QtWidgets.QPushButton(self.Tekst)
        self.pushButton_5.setGeometry(QtCore.QRect(430, 320, 241, 28))
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_5.clicked.connect(self.encrypt_text)
        self.pushButton_5.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_3 = QtWidgets.QSpinBox(self.Tekst)
        self.spinBox_3.setGeometry(QtCore.QRect(500, 210, 81, 31))
        self.spinBox_3.setObjectName("spinBox_3")
        self.spinBox_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_4 = QtWidgets.QSpinBox(self.Tekst)
        self.spinBox_4.setGeometry(QtCore.QRect(500, 130, 81, 31))
        self.spinBox_4.setObjectName("spinBox_4")
        self.spinBox_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_9 = QtWidgets.QLabel(self.Tekst)
        self.label_9.setGeometry(QtCore.QRect(430, 110, 231, 16))
        self.label_9.setAlignment(QtCore.Qt.AlignCenter)
        self.label_9.setObjectName("label_9")
        self.progressBar_3 = QtWidgets.QProgressBar(self.Tekst)
        self.progressBar_3.setGeometry(QtCore.QRect(430, 50, 271, 23))
        self.progressBar_3.setProperty("value", 0)
        self.progressBar_3.setObjectName("progressBar_3")
        self.progressBar_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_10 = QtWidgets.QLabel(self.Tekst)
        self.label_10.setGeometry(QtCore.QRect(430, 190, 231, 16))
        self.label_10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_10.setObjectName("label_10")
        self.label_11 = QtWidgets.QLabel(self.Tekst)
        self.label_11.setGeometry(QtCore.QRect(750, 300, 351, 20))
        self.label_11.setScaledContents(False)
        self.label_11.setAlignment(QtCore.Qt.AlignCenter)
        self.label_11.setObjectName("label_11")
        self.pushButton_6 = QtWidgets.QPushButton(self.Tekst)
        self.pushButton_6.setGeometry(QtCore.QRect(430, 690, 241, 28))
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_6.clicked.connect(self.decrypt_text)
        self.pushButton_6.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar_4 = QtWidgets.QProgressBar(self.Tekst)
        self.progressBar_4.setGeometry(QtCore.QRect(430, 420, 271, 23))
        self.progressBar_4.setProperty("value", 0)
        self.progressBar_4.setObjectName("progressBar_4")
        self.progressBar_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_12 = QtWidgets.QLabel(self.Tekst)
        self.label_12.setGeometry(QtCore.QRect(750, 390, 351, 20))
        self.label_12.setAlignment(QtCore.Qt.AlignCenter)
        self.label_12.setObjectName("label_12")
        self.textEdit_2 = QtWidgets.QTextEdit(self.Tekst)
        self.textEdit_2.setGeometry(QtCore.QRect(750, 420, 351, 301))
        self.textEdit_2.setObjectName("textEdit_2")
        self.textEdit_2.setStyleSheet("border:1px solid #e6f5ff;")
        self.pushButton_7 = QtWidgets.QPushButton(self.Tekst)
        self.pushButton_7.setGeometry(QtCore.QRect(20, 690, 331, 28))
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_7.clicked.connect(self.add_text_share)
        self.pushButton_7.setStyleSheet("border:1px solid #e6f5ff;")
        self.textEdit_3 = QtWidgets.QTextEdit(self.Tekst)
        self.textEdit_3.setGeometry(QtCore.QRect(20, 450, 331, 231))
        self.textEdit_3.setObjectName("textEdit_3")
        self.textEdit_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollArea_3 = QtWidgets.QScrollArea(self.Tekst)
        self.scrollArea_3.setGeometry(QtCore.QRect(740, 40, 361, 261))
        self.scrollArea_3.setWidgetResizable(True)
        self.scrollArea_3.setObjectName("scrollArea_3")
        self.scrollArea_3.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_13 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_13.setGeometry(
            QtCore.QRect(0, 0, 359, 259))
        self.scrollAreaWidgetContents_13.setObjectName(
            "scrollAreaWidgetContents_13")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_13)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.listWidget_4 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_13)
        self.listWidget_4.setObjectName("listWidget_4")
        self.horizontalLayout_4.addWidget(self.listWidget_4)
        self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_13)
        self.scrollArea_4 = QtWidgets.QScrollArea(self.Tekst)
        self.scrollArea_4.setGeometry(QtCore.QRect(380, 450, 351, 231))
        self.scrollArea_4.setWidgetResizable(True)
        self.scrollArea_4.setObjectName("scrollArea_4")
        self.scrollArea_4.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_4.setGeometry(
            QtCore.QRect(0, 0, 349, 229))
        self.scrollAreaWidgetContents_4.setObjectName(
            "scrollAreaWidgetContents_4")
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_4)
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.listWidget_5 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_4)
        self.listWidget_5.setObjectName("listWidget_5")
        self.horizontalLayout_5.addWidget(self.listWidget_5)
        self.scrollArea_4.setWidget(self.scrollAreaWidgetContents_4)
        self.toolBox.addItem(self.Tekst, " Текст ")
        self.Broj = QtWidgets.QWidget()
        self.Broj.setObjectName("Broj")
        self.spinBox_5 = QtWidgets.QSpinBox(self.Broj)
        self.spinBox_5.setGeometry(QtCore.QRect(20, 90, 381, 41))
        self.spinBox_5.setStyleSheet("border:1px solid #e6f5ff;")
        font = QtGui.QFont()
        font.setPointSize(16)
        self.spinBox_5.setFont(font)
        self.spinBox_5.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_5.setObjectName("spinBox_5")
        self.spinBox_5.setMaximum(2147483647)
        self.label_13 = QtWidgets.QLabel(self.Broj)
        self.label_13.setGeometry(QtCore.QRect(20, 20, 381, 41))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.label_13.setFont(font)
        self.label_13.setAlignment(QtCore.Qt.AlignCenter)
        self.label_13.setObjectName("label_13")
        self.pushButton_16 = QtWidgets.QPushButton(self.Broj)
        self.pushButton_16.setGeometry(QtCore.QRect(450, 250, 241, 28))
        self.pushButton_16.setObjectName("pushButton_16")
        self.pushButton_16.clicked.connect(self.encrypt_number)
        self.pushButton_16.setStyleSheet("border:1px solid #e6f5ff;")
        self.label_27 = QtWidgets.QLabel(self.Broj)
        self.label_27.setGeometry(QtCore.QRect(450, 160, 231, 16))
        self.label_27.setAlignment(QtCore.Qt.AlignCenter)
        self.label_27.setObjectName("label_27")
        self.label_28 = QtWidgets.QLabel(self.Broj)
        self.label_28.setGeometry(QtCore.QRect(450, 80, 231, 16))
        self.label_28.setAlignment(QtCore.Qt.AlignCenter)
        self.label_28.setObjectName("label_28")
        self.spinBox_11 = QtWidgets.QSpinBox(self.Broj)
        self.spinBox_11.setGeometry(QtCore.QRect(520, 180, 81, 31))
        self.spinBox_11.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_11.setObjectName("spinBox_11")
        self.spinBox_11.setStyleSheet("border:1px solid #e6f5ff;")
        self.progressBar_9 = QtWidgets.QProgressBar(self.Broj)
        self.progressBar_9.setGeometry(QtCore.QRect(450, 20, 271, 23))
        self.progressBar_9.setProperty("value", 0)
        self.progressBar_9.setObjectName("progressBar_9")
        self.progressBar_9.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_12 = QtWidgets.QSpinBox(self.Broj)
        self.spinBox_12.setGeometry(QtCore.QRect(520, 100, 81, 31))
        self.spinBox_12.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_12.setObjectName("spinBox_12")
        self.spinBox_12.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_13 = QtWidgets.QSpinBox(self.Broj)
        self.spinBox_13.setGeometry(QtCore.QRect(20, 480, 351, 31))
        self.spinBox_13.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_13.setObjectName("spinBox_13")
        self.spinBox_13.setStyleSheet("border:1px solid #e6f5ff;")
        self.spinBox_13.setMaximum(2147483647)
        self.pushButton_17 = QtWidgets.QPushButton(self.Broj)
        self.pushButton_17.setGeometry(QtCore.QRect(20, 530, 351, 41))
        self.pushButton_17.setObjectName("pushButton_17")
        self.pushButton_17.clicked.connect(self.add_number_share)
        self.pushButton_17.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollArea_5 = QtWidgets.QScrollArea(self.Broj)
        self.scrollArea_5.setGeometry(QtCore.QRect(740, 20, 361, 261))
        self.scrollArea_5.setWidgetResizable(True)
        self.scrollArea_5.setObjectName("scrollArea_5")
        self.scrollArea_5.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_5 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_5.setGeometry(
            QtCore.QRect(0, 0, 359, 259))
        self.scrollAreaWidgetContents_5.setObjectName(
            "scrollAreaWidgetContents_5")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_5)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.listWidget_6 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_5)
        self.listWidget_6.setObjectName("listWidget_6")
        self.horizontalLayout_6.addWidget(self.listWidget_6)
        self.scrollArea_5.setWidget(self.scrollAreaWidgetContents_5)
        self.scrollArea_11 = QtWidgets.QScrollArea(self.Broj)
        self.scrollArea_11.setGeometry(QtCore.QRect(390, 470, 351, 251))
        self.scrollArea_11.setWidgetResizable(True)
        self.scrollArea_11.setObjectName("scrollArea_11")
        self.scrollArea_11.setStyleSheet("border:1px solid #e6f5ff;")
        self.scrollAreaWidgetContents_11 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_11.setGeometry(
            QtCore.QRect(0, 0, 349, 249))
        self.scrollAreaWidgetContents_11.setObjectName(
            "scrollAreaWidgetContents_11")
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents_11)
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.listWidget_7 = QtWidgets.QListWidget(
            self.scrollAreaWidgetContents_11)
        self.listWidget_7.setObjectName("listWidget_7")
        self.horizontalLayout_7.addWidget(self.listWidget_7)
        self.scrollArea_11.setWidget(self.scrollAreaWidgetContents_11)
        self.pushButton_18 = QtWidgets.QPushButton(self.Broj)
        self.pushButton_18.setGeometry(QtCore.QRect(20, 650, 351, 41))
        self.pushButton_18.setObjectName("pushButton_18")
        self.pushButton_18.clicked.connect(self.decrypt_number)
        self.pushButton_18.setStyleSheet("border:1px solid #e6f5ff;")
        self.lcdNumber = QtWidgets.QLCDNumber(self.Broj)
        self.lcdNumber.setGeometry(QtCore.QRect(760, 550, 341, 121))
        self.lcdNumber.setFrameShape(QtWidgets.QFrame.Panel)
        self.lcdNumber.setSmallDecimalPoint(False)
        self.lcdNumber.setDigitCount(20)
        self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
        self.lcdNumber.setProperty("value", -1.0)
        self.lcdNumber.setProperty("intValue", -1)
        self.lcdNumber.setObjectName("lcdNumber")
        self.lcdNumber.setStyleSheet("border:1px solid #e6f5ff;")
        self.toolBox.addItem(self.Broj, " Број ")
        ShamirSecretSharing.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(ShamirSecretSharing)
        self.statusbar.setObjectName("statusbar")
        ShamirSecretSharing.setStatusBar(self.statusbar)

        self.retranslateUi(ShamirSecretSharing)
        QtCore.QMetaObject.connectSlotsByName(ShamirSecretSharing)

    def retranslateUi(self, ShamirSecretSharing):
        _translate = QtCore.QCoreApplication.translate
        ShamirSecretSharing.setWindowTitle(
            _translate("ShamirSecretSharing", "Шамир Сикрет Шеринг"))
        self.toolBox.setWhatsThis(
            _translate("ShamirSecretSharing",
                       "<html><head/><body><p><br/></p></body></html>"))
        self.Slika.setWhatsThis(
            _translate(
                "ShamirSecretSharing",
                "<html><head/><body><p>Ekripcija i dekripcija slike</p></body></html>"
            ))
        self.pushButton.setText(
            _translate("ShamirSecretSharing", "Одабери слику"))
        self.pushButton_2.setText(
            _translate("ShamirSecretSharing", "Енкриптуј"))
        self.label.setText(_translate("ShamirSecretSharing", "Број подјела:"))
        self.label_2.setText(
            _translate("ShamirSecretSharing",
                       "Потребно дијелова за реконструкцију:"))
        self.label_3.setText(
            _translate("ShamirSecretSharing", "Дијелови тајне слике"))
        self.label_4.setText(
            _translate("ShamirSecretSharing", "Локација подјела:"))
        self.label_5.setText(_translate("ShamirSecretSharing", "линк"))
        self.label_5.setStyleSheet("color: #e6f5ff")
        self.pushButton_4.setText(
            _translate("ShamirSecretSharing", "Декриптуј"))
        self.label_6.setText(
            _translate("ShamirSecretSharing", "Одабрани дијелови"))
        self.pushButton_3.setText(
            _translate("ShamirSecretSharing", "Убаци дио"))
        self.label_7.setText(
            _translate("ShamirSecretSharing", "Резултат декрипције"))
        self.Tekst.setWhatsThis(
            _translate(
                "ShamirSecretSharing",
                "<html><head/><body><p>Ekripcija i dekripcija unesenog broja</p></body></html>"
            ))
        self.label_8.setText(
            _translate("ShamirSecretSharing", "Текст за енкрипцију"))
        self.pushButton_5.setText(
            _translate("ShamirSecretSharing", "Енкриптуј"))
        self.label_9.setText(_translate("ShamirSecretSharing",
                                        "Број подјела:"))
        self.label_10.setText(
            _translate("ShamirSecretSharing",
                       "Потребно дијелова за реконструкцију:"))
        self.label_11.setText(
            _translate("ShamirSecretSharing", "Дијелови тајног текста"))
        self.pushButton_6.setText(
            _translate("ShamirSecretSharing", "Декриптуј"))
        self.label_12.setText(
            _translate("ShamirSecretSharing", "Текст добијен декрипцијом"))
        self.pushButton_7.setText(
            _translate("ShamirSecretSharing", "Додај дио"))
        self.Broj.setWhatsThis(
            _translate(
                "ShamirSecretSharing",
                "<html><head/><body><p>Ekripcija i dekripcija unesenog teksta</p></body></html>"
            ))
        self.label_13.setText(
            _translate("ShamirSecretSharing", "Број за енкрипцију"))
        self.pushButton_16.setText(
            _translate("ShamirSecretSharing", "Енкриптуј"))
        self.label_27.setText(
            _translate("ShamirSecretSharing",
                       "Потребно дијелова за реконструкцију:"))
        self.label_28.setText(
            _translate("ShamirSecretSharing", "Број подјела:"))
        self.pushButton_17.setText(
            _translate("ShamirSecretSharing", "Додај дио"))
        self.pushButton_18.setText(
            _translate("ShamirSecretSharing", "Декриптуј"))