예제 #1
0
def ElgamalDecy(encyseg,key):
    shpseg = np.shape(encyseg)
    decysegmnt = np.zeros([shpseg[0], shpseg[1]])

    for i in range(0, shpseg[0]):
        for j in range(0, shpseg[1]):
            decysegmnt[i, j] = elgml.decrypt(key, encyseg[i, j])

    return decysegmnt
    encysegmnt = np.empty((shpseg[0], shpseg[1]), dtype=object)

    for i in range(0, shpseg[0]):
        for j in range(0, shpseg[1]):
            encysegmnt[i, j] = elgml.encrypt(key, str(imgseg[i, j]))

    return encysegmnt
예제 #2
0
def ElgamalEncy(imgseg,key):
    shpseg=np.shape(imgseg)

    encysegmnt = np.empty((shpseg[0], shpseg[1]), dtype=object)

    for i in range(0,shpseg[0]):
        for j in range(0, shpseg[1]):
            encysegmnt[i,j]=elgml.encrypt(key,str(imgseg[i,j]))

    return encysegmnt
    def generate_prime(self, event):
        self.m_button4.Disable()
        num = self.m_textCtrl17.GetValue()
        if num == "":
            dlg = wx.MessageDialog(None, "Please Enter a number!", "Error")
            dlg.ShowModal()
            dlg.Destroy()
            return
        self.m_button2.Disable()
        self.m_button2.SetLabel(u"Generating...")
        q = Elgamal.generate_q(num)
        p = Elgamal.generate_p(q)
        a = Elgamal.primitive(q)
        self.m_textCtrl3.write(p)
        self.m_textCtrl7.write(a)
        self.m_button2.Enable()
        self.m_button2.SetLabel(u"Generate p,a")

        self.m_button4.Enable()
 def generate_cipher(self, event):
     plain = self.m_textCtrl5.GetValue()
     a = self.m_textCtrl6.GetValue()
     p = self.m_textCtrl7.GetValue()
     k = Elgamal.generate_random(p)
     pub = self.m_textCtrl9.GetValue()
     if a == "" or plain == "" or p == "" or pub == "":
         dlg = wx.MessageDialog(None, "Please Enter a value!", "Error")
         dlg.ShowModal()
         dlg.Destroy()
         return
     self.m_button2.Disable()
     self.m_button2.SetLabel(u"Encrypting...")
     cipher_1 = Elgamal.get_cipher_1(a, k, p)
     self.m_textCtrl10.write(cipher_1)
     for plain_letter in plain:
         cipher_2 = Elgamal.get_cipher_2(pub, k, p, plain_letter)
         self.m_textCtrl11.write(cipher_2)
         self.m_textCtrl11.write(' ')
     self.m_button2.Enable()
     self.m_button2.SetLabel(u"Encrypt")
 def decrypt(self, event):
     c1 = self.m_textCtrl12.GetValue()
     c2 = self.m_textCtrl13.GetValue()
     c2_list = c2.split()
     p = self.m_textCtrl14.GetValue()
     priv = self.m_textCtrl15.GetValue()
     if c1 == "" or c2 == "" or p == "" or priv == "":
         dlg = wx.MessageDialog(None, "Please Enter a value!", "Error")
         dlg.ShowModal()
         dlg.Destroy()
         return
     self.m_button3.Disable()
     self.m_button3.SetLabel("Decrypting...")
     for cipher in c2_list:
         self.m_textCtrl16.write(Elgamal.decrypt(c1, cipher, priv, p))
     self.m_button3.Enable()
     self.m_button3.SetLabel("Decrypt")
 def generate_keys(self, event):
     self.m_button4.Disable()
     self.m_button4.SetLabel("Generating...")
     p = self.m_textCtrl3.GetValue()
     a = self.m_textCtrl7.GetValue()
     priv = self.m_textCtrl9.GetValue()
     if priv == "":
         dlg = wx.MessageDialog(None, "Please Enter a number!", "Error")
         dlg.ShowModal()
         dlg.Destroy()
         self.m_button4.Enable()
         self.m_button4.SetLabel("Generate Keys")
         return
     pub = Elgamal.get_public(a, priv, p)
     self.m_textCtrl8.write(pub)
     self.m_button4.Enable()
     self.m_button4.SetLabel("Generate Keys")
예제 #7
0
import Elgamal

Elgamal.generatekeys()
예제 #8
0
import Elgamal

Elgamal.decrypt(privateKeyFilename = 'my_elgamal_private_key.txt', ciphertextFilename = 'elgamal_encrypted_message.txt')
예제 #9
0
host = socket.gethostname()
#Random port number
port = 12345

s = socket.socket()
#binds address and port
s.bind((host, port))

#listens in up to 2 connections at a time
s.listen(2)

#Accepts connection to the server
conn, addr = s.accept()

#Creates keys to be sent to Client once connected
p, a, g, ga = Elgamal.generateKey(64)

#places keys into a string format seperated by commas
publickeys = str(p) + "," + str(g) + "," + str(ga)

#sends keys to client
conn.send(publickeys.encode())

#collecting public key from client
gb = conn.recv(1024).decode()

#calculate gab
gab = pow(int(gb), a, p)

#turn key to string
key = gab.to_bytes(32, 'little')
예제 #10
0
import Elgamal

Elgamal.encrypt(publicKeyFilename = 'my_elgamal_public_key.txt', plaintextFilename = 'plaintext.txt')
예제 #11
0
# Now the transfer of three messages Hello1, Hello2, Hello3 begins
msgs = ['Hello1', 'Hello2', 'Hello3']

for _ in range(3):

    print("I am sending -:", msgs[_])
    message = s.recv(2048)
    message = message.decode()
    public_key_A, received_mac = message.split("||")

    computed_mac = HMAC.returnHMAC(key=secret_key_AB_HMAC,
                                   message=public_key_A)

    if (computed_mac != received_mac):
        print("MAC ERROR")

    q, alpha, YA = list(map(int, public_key_A.split(" ")))

    random_int = rint(1, q)

    K = pow(YA, random_int, q)
    encrypted_message = Elgamal.encrypt(q, alpha, random_int, K, msgs[_])

    message_to_be_sent = encrypted_message + "||" + HMAC.returnHMAC(
        key=secret_key_AB_HMAC, message=encrypted_message)

    s.send(str.encode(message_to_be_sent))

s.close()
예제 #12
0
파일: Main.py 프로젝트: ingambe/ElGamal
    Print the private key if she's founded
    Prove that it's important to choose a big random x to prevent attacks
    :param public_key: the public key tuple
    '''
    q = public_key[0]
    g = public_key[1]
    h = public_key[2]
    for i in range(1, q):
        if (g ** i) % q == h:
            print("FOUND !")
            print("Private key = {}".format(i))
            return


if __name__== "__main__":
    alice = Elgamal()
    bob = Elgamal()

    # El Gamal for integer
    print("Integer")
    message = 5
    alice_public_key = alice.publishPublicKey()
    print("Vous essayer de crypter {}".format(message))
    print("la clef publique de alice : {}".format(alice_public_key))
    print("l'ordre dy groupe cyclique est : {}".format(alice_public_key[0]))
    print(alice_public_key)
    bob_cipher = bob.cipher(alice_public_key, message)
    print("le crypte : {}".format(bob_cipher))
    alice_decrypted = alice.unCipher(bob_cipher)
    print("le message decrypte {}".format(alice_decrypted))
예제 #13
0
port = 12345

#this is the socket
s = socket.socket()

#binds address and port
s.bind((host, port))

#listens in up to 2 connections at a time
s.listen(2)

#Accepts connection to the server
conn, addr = s.accept()

#Creates keys to be sent to Client once connected
p,a,g,ga = Elgamal.generateKey(128)

#places keys into a string format seperated by commas
publickeys = str(p) + "," + str(g) + "," + str(ga)

#sends keys to client
conn.send(publickeys.encode())

#collecting public key from client
gb = conn.recv(1024).decode()

#calculate gab
gab = pow(int(gb), a, p)

#printing the key for the presentation
print("Key: " + str(gab))
예제 #14
0
def rsamain(imgloc):
	inLoc = os.path.basename(imgloc)
	img= cv2.imread(imgloc, 0)
	print ("Original Image Dimensions: ", img.size)
	shp = np.shape(img)
	height = shp[0]
	width = shp[1]
	heightindex=closestNumber(height,3)
	widthindex=closestNumber(width,3)
	if(height%3!=0):
		img = cv2.copyMakeBorder(img,0,heightindex,0,0,cv2.BORDER_REPLICATE)
	if(width%3!=0):
		img = cv2.copyMakeBorder(img, 0, 0, 0, widthindex, cv2.BORDER_REPLICATE)
	shp = np.shape(img)


	height = shp[0]

	width = shp[1]
	orignalimg=img
	start_time = time.time()

	slic=slice(img)



	plainslice=np.reshape(slic,[9,1,int(height/3)*int(width/3)])

	decimalearray=imagepresteps(plainslice,height,width)
	elgmlkeys=elgml.generate_keys()
	elgmlpub=elgmlkeys['publicKey']
	elgmlpriv=elgmlkeys['privateKey']
	ShareImgs = np.empty((9, int(height/3),int(width/3)), dtype=object)
	(n, e, d) = rsa.newKey(10**100, 10**101, 50)

	for i in range(0,9):
		if(i%2!=0):
			ShareImgs[i, :, :]=ElgamalEncy(decimalearray[i],elgmlpub)
		else:
			ShareImgs[i, :, :] = RSAEncy(decimalearray[i], n,e,8)



	rsaetime=(time.time() - start_time)
	print(rsaetime)
	print("Decryption Started")
	start_time = time.time()

	decrypteddecimalarray = np.zeros([9, int(height/3),int(width/3)])

	for i in range(0,9):
		if(i%2!=0):
			decrypteddecimalarray[i,:,:] =ElgamalDecy(ShareImgs[i],elgmlpriv)
		else:
			decrypteddecimalarray[i, :, :] = RSADecy(ShareImgs[i], n,d,8,d)


	plainslice=np.reshape(decrypteddecimalarray,[9,1,int(height/3)*int(width/3)])

	imagepresteps(plainslice,height,width)
	binimage = converttobin(plainslice)
	# print(len(binimage[0]))

	length = int(len(binimage[0]) / 64) + 1
	BinaryArrayforPermut = np.zeros([9, length, 64])

	for i in range(0, 9):
		BinaryArrayforPermut[i, :, :] = divideimageblocks(binimage[i])

	shparr = np.shape(BinaryArrayforPermut)

	reversedpermutedarray = np.zeros([shparr[0], shparr[1], shparr[2]])
	for i in range(0, 9):
		reversedpermutedarray[i, :, :] = rversepermutaion(BinaryArrayforPermut[i])

	decimalearrayreversepermuted = np.zeros([9, int(height / 3), int(width / 3)])
	for i in range(0, 9):
		temp = converttodecimal(reversedpermutedarray[i])
		decimalearrayreversepermuted[i] = np.reshape(temp, [int(height / 3), int(width / 3)])


	recoveredimg=reconstructimage(decimalearrayreversepermuted)
	rsadtime=(time.time() - start_time)
	print(rsadtime)

	rsapsnr=(psnr(orignalimg,recoveredimg))
	
	
	a = ['/static/'+inLoc, '/static/re.png', '/static/rd.png',rsaetime,rsadtime,rsapsnr]
	rsa_out = open("output.csv",'w+')
	rsa_out.write('/static/'+inLoc+','+ '/static/share-1.jpg'+','+ '/static/rd.png'+','+str(rsaetime)+','+str(rsadtime)+','+str(rsapsnr))
	rsa_out.close()
	#my = pd.DataFrame(a)
	#my.to_csv("output.csv",index=False,header=False)
	return a
예제 #15
0
파일: final.py 프로젝트: LucasGrugru/crypto
class Rassemblement(QWidget):
    def __init__(self, parent=None):         # constructeur de l'objet
        QWidget.__init__(self, parent)
        self.onglet = QTabWidget()                                              #Consctructeur des onglets

        self.largonjem = QWidget()                                              #QWidget largonjem          //OPE
        self.cesar = QWidget()                                                  #QWidget Cesar              //OPE
        self.elgamal = QWidget()                                                #QWidget elgamal            //OPE
        self.eratos = QWidget()                                                 #QWidget eratos             //OPE
        self.divers = QWidget()                                                 #QWidget Chinois && Wilson  //OPE
        self.sha = QWidget()                                                    #QWidget sha                //OPE
        self.rsa = QWidget()                                                    #QWidget rsa                //OPE

        #rsa

        self.label_rsa_cle_public = QLabel(self.trUtf8("Clé public"))
        self.label_rsa_cle_prive = QLabel(self.trUtf8("Clé privée"))
        self.label_rsa_module = QLabel(self.trUtf8("Module"))

        self.edit_rsa_public = QLineEdit()
        self.edit_rsa_privee = QLineEdit()
        self.edit_rsa_module = QLineEdit()

        self.label_text_edit_rsa_decrypt = QLabel(self.trUtf8("Texte à crypter : "))
        self.label_text_edit_rsa_crypt = QLabel(self.trUtf8("Texte à décrypter : "))

        self.text_edit_rsa_decrypt = QTextEdit("abc")
        self.text_edit_rsa_crypt = QTextEdit()

        self.button_rsa_crypter = QPushButton("Crypter")
        self.button_rsa_decrypter = QPushButton("Decrypter")
        self.button_rsa_generer = QPushButton(self.trUtf8("Génerer"))

        layout_rsa_main = QGridLayout()

        layout_rsa_main.addWidget(self.label_rsa_cle_public, 0,0)
        layout_rsa_main.addWidget(self.label_rsa_cle_prive, 1,0)
        layout_rsa_main.addWidget(self.label_rsa_module, 2,0)

        layout_rsa_main.addWidget(self.edit_rsa_public, 0,1)
        layout_rsa_main.addWidget(self.edit_rsa_privee, 1, 1)
        layout_rsa_main.addWidget(self.edit_rsa_module, 2,1)
    
        layout_rsa_main.addWidget(self.label_text_edit_rsa_decrypt, 4,0)
        layout_rsa_main.addWidget(self.label_text_edit_rsa_crypt, 4,1)

        layout_rsa_main.addWidget(self.text_edit_rsa_decrypt, 5,0)
        layout_rsa_main.addWidget(self.text_edit_rsa_crypt, 5,1)

        layout_rsa_main.addWidget(self.button_rsa_crypter, 6,0)
        layout_rsa_main.addWidget(self.button_rsa_decrypter, 6,1)
        layout_rsa_main.addWidget(self.button_rsa_generer, 3,1)

        self.rsa.setLayout(layout_rsa_main)

        self.button_rsa_generer.connect(self.button_rsa_generer, SIGNAL("clicked(bool)"), self.rsa_generer)
        self.button_rsa_generer.connect(self.button_rsa_crypter, SIGNAL("clicked(bool)"), self.rsa_crypt)
        self.button_rsa_generer.connect(self.button_rsa_decrypter, SIGNAL("clicked(bool)"), self.rsa_decrypt)


        #Largonjem
        
        self.label_largonjem_normal = QLabel("Texte à crypter".decode("utf-8"))
        self.label_largonjem_crypter = QLabel("Texte crypté".decode("utf-8"))
        self.text_edit_largonjem_normal = QTextEdit("abc")
        self.text_edit_largonjem_crypter = QTextEdit()
        self.button_largonjem_crypt = QPushButton("Crypter")
        layout_largonjem_principal = QGridLayout()

        layout_largonjem_principal.addWidget(self.label_largonjem_normal, 0, 0)
        layout_largonjem_principal.addWidget(self.text_edit_largonjem_normal, 1, 0)
        
        layout_largonjem_principal.addWidget(self.label_largonjem_crypter, 0, 1)
        layout_largonjem_principal.addWidget(self.text_edit_largonjem_crypter, 1 , 1)
        layout_largonjem_principal.addWidget(self.button_largonjem_crypt)

        self.largonjem.setLayout(layout_largonjem_principal)
        self.button_largonjem_crypt.connect(self.button_largonjem_crypt, SIGNAL("clicked(bool)"), self.LargonjemCrypt)
        
        self.largonjem_instance = Largonjem()

        #Cesar
        self.cesar_instance = Cesar()
        
        self.label_cesar_decalage = QLabel("Decalage")
        self.label_cesar_cle = QLabel("Clé".decode("utf-8"))
        self.label_cesar_crypt = QLabel("Texte a crypter")
        self.label_cesar_decrypt = QLabel("Texte crypté".decode("utf-8"))

        self.text_edit_cesar_crypt = QTextEdit("abc")
        self.text_edit_cesar_decrypt = QTextEdit()
        
        self.line_edit_cesar_decalage = QLineEdit("9")
        self.line_edit_cesar_cle = QLineEdit("0")
        self.button_cesar_crypt = QPushButton("Crypter par décalage".decode("utf-8"))
        self.button_cesar_crypt_bis = QPushButton("Crypter par clé".decode("utf-8"))
        self.button_cesar_decrypt = QPushButton("Décrypter par décalage".decode("utf-8"))
        self.button_cesar_decrypt_bis = QPushButton("Décrypter par clé".decode("utf-8"))       
        
        layout_cesar_principal = QGridLayout()
        layout_cesar_principal.addWidget(self.label_cesar_decalage, 0, 0)
        layout_cesar_principal.addWidget(self.line_edit_cesar_decalage, 0, 1)
        layout_cesar_principal.addWidget(self.label_cesar_cle,1 , 0)
        layout_cesar_principal.addWidget(self.line_edit_cesar_cle, 1, 1)
        layout_cesar_principal.addWidget(self.label_cesar_crypt, 2, 0)
        layout_cesar_principal.addWidget(self.text_edit_cesar_crypt, 3, 0)
        layout_cesar_principal.addWidget(self.label_cesar_decrypt, 2, 1)
        layout_cesar_principal.addWidget(self.text_edit_cesar_decrypt, 3, 1)
        layout_cesar_principal.addWidget(self.button_cesar_crypt, 4, 0)
        layout_cesar_principal.addWidget(self.button_cesar_crypt_bis , 4 , 1)
        layout_cesar_principal.addWidget(self.button_cesar_decrypt, 5, 0)
        layout_cesar_principal.addWidget(self.button_cesar_decrypt_bis , 5 ,1)        
                
        self.cesar.setLayout(layout_cesar_principal)

        
        self.button_cesar_crypt.connect(self.button_cesar_crypt, SIGNAL("clicked(bool)"), self.CesarCryptDecalage)
        self.button_cesar_crypt_bis.connect(self.button_cesar_crypt_bis, SIGNAL("clicked(bool)"), self.CesarCryptCle)
        self.button_cesar_decrypt.connect(self.button_cesar_decrypt, SIGNAL("clicked(bool)"), self.CesarDecryptDecalage)
        self.button_cesar_decrypt_bis.connect(self.button_cesar_decrypt_bis, SIGNAL("clicked(bool)"), self.CesarDecryptCle)


        #ElGamal
        self.el = Elgamal()

        self.label_bits = QLabel("Taille de la cle : ")
        self.label_premier = QLabel("Nombre premier : ")
        self.label_tour = QLabel("Nombre de tours : ")
        self.label_clePrive = QLabel("Clée Privé : ".decode("utf-8"))
        self.label_clePublic = QLabel("Clée Public : ".decode("utf-8"))
        self.label_a = QLabel("Nombre Aleatoire a : ")
        self.label_g = QLabel("Nombre Aleatoire g : ")
        self.label_origine = QLabel("Texte à crypter".decode("utf-8"))
        self.label_ascii = QLabel("Texte en ASCII")
        self.label_crypter = QLabel("Texte crypter ")
        self.label_decrypter = QLabel("Texte décrypter".decode("utf-8"))
        self.label_error_elgamal = QLabel("")

        self.line_edit_bits = QLineEdit("32")
        self.line_edit_premier = QLineEdit()
        self.line_edit_tour = QLineEdit("20")
        self.line_edit_clePrive = QLineEdit()
        self.line_edit_clePublic = QLineEdit()        
        self.line_edit_a = QLineEdit()
        self.line_edit_g = QLineEdit()

        self.text_edit_origine = QTextEdit()
        self.text_edit_ascii = QTextEdit()
        self.text_edit_crypter = QTextEdit()    
        self.text_edit_decrypter = QTextEdit()

        self.bouton_crypter = QPushButton("Crypter")
        self.bouton_decrypter = QPushButton("Décrypter".decode("utf-8"))
        self.bouton_generer = QPushButton("Générer".decode("utf-8"))

        layout_elgamal_principal = QGridLayout()
        layout_elgamal_principal.addWidget(self.label_bits, 0, 0)
        layout_elgamal_principal.addWidget(self.line_edit_bits, 0, 1)
        layout_elgamal_principal.addWidget(self.label_tour, 1, 0)
        layout_elgamal_principal.addWidget(self.line_edit_tour, 1, 1)
        layout_elgamal_principal.addWidget(self.label_premier , 2, 0)
        layout_elgamal_principal.addWidget(self.line_edit_premier ,2, 1)
        layout_elgamal_principal.addWidget(self.label_clePublic, 3,0)
        layout_elgamal_principal.addWidget(self.line_edit_clePublic, 3, 1)
        layout_elgamal_principal.addWidget(self.label_clePrive, 4, 0)
        layout_elgamal_principal.addWidget(self.line_edit_clePrive, 4, 1)
        layout_elgamal_principal.addWidget(self.label_a, 0, 2)
        layout_elgamal_principal.addWidget(self.line_edit_a, 0, 3)
        layout_elgamal_principal.addWidget(self.label_g, 1, 2)
        layout_elgamal_principal.addWidget(self.line_edit_g, 1, 3)

        layout_elgamal_principal.addWidget(self.label_origine, 5, 0, 1, 2) 
        layout_elgamal_principal.addWidget(self.text_edit_origine, 6, 0, 1 , 2)
        layout_elgamal_principal.addWidget(self.label_ascii, 5, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.text_edit_ascii , 6 ,2, 1, 2)
        layout_elgamal_principal.addWidget(self.label_crypter , 7, 0, 1, 2)
        layout_elgamal_principal.addWidget(self.text_edit_crypter, 8, 0, 1, 2)
        layout_elgamal_principal.addWidget(self.label_decrypter, 7, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.text_edit_decrypter, 8, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.bouton_generer, 2 , 2, 1 , 2)
        layout_elgamal_principal.addWidget(self.bouton_crypter, 3, 2 ,1 ,2)
        layout_elgamal_principal.addWidget(self.bouton_decrypter , 4, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.label_error_elgamal, 9, 0, 1, 4)

        self.bouton_generer.connect(self.bouton_generer, SIGNAL("clicked(bool)"), self.GenererElgamal)
        self.bouton_crypter.connect(self.bouton_crypter, SIGNAL("clicked(bool)"), self.CrypterElgamal)
        self.bouton_decrypter.connect(self.bouton_decrypter, SIGNAL("clicked(bool)"), self.DecrypterElgamal)

        self.elgamal.setLayout(layout_elgamal_principal)


        #Eratosthene
        self.eratos_instance = Eratosthene()
        
        self.label_eratos_nombre = QLabel("Maximum")
        self.line_edit_eratos = QLineEdit("10")
        self.text_edit_eratos = QTextEdit()
        self.button_eratos_genere = QPushButton("Générer".decode("utf-8"))
        layout_erastos_principal = QGridLayout()
        layout_erastos_principal.addWidget(self.label_eratos_nombre, 0, 0)
        layout_erastos_principal.addWidget(self.line_edit_eratos, 0, 1)
        layout_erastos_principal.addWidget(self.button_eratos_genere, 0, 2)
        layout_erastos_principal.addWidget(self.text_edit_eratos, 1, 0, 1, 2)              
        
        self.eratos.setLayout(layout_erastos_principal)
        
        self.button_eratos_genere.connect(self.button_eratos_genere, SIGNAL("clicked(bool)"), self.GenererEratos)


        #SHA1
        self.label_sha_message = QLabel("Message")
        self.label_sha_crypter = QLabel("Message Crypter")
        self.text_edit_sha_message = QTextEdit()
        self.text_edit_sha_decrypter = QTextEdit()
        self.button_sha_hascher = QPushButton("Hascher")
        

        layout_sha_principal = QGridLayout()
        layout_sha_principal.addWidget(self.label_sha_message, 0, 0)
        layout_sha_principal.addWidget(self.text_edit_sha_message, 1, 0)
        layout_sha_principal.addWidget(self.label_sha_crypter , 0, 1)
        layout_sha_principal.addWidget(self.text_edit_sha_decrypter, 1, 1)
        layout_sha_principal.addWidget(self.button_sha_hascher, 2, 0, 1, 2)

        self.button_sha_hascher.connect(self.button_sha_hascher, SIGNAL("clicked(bool)"), self.HascherSHA)

        self.sha.setLayout(layout_sha_principal)


        #Mise en place des QWidgets dans les onglets
        self.onglet.addTab(self.largonjem, "Largonjem")
        self.onglet.addTab(self.cesar, "Cesar")
        self.onglet.addTab(self.elgamal, "ElGamal")
        self.onglet.addTab(self.eratos, "Eratosthene")
        self.onglet.addTab(self.sha, "SHA1")
        self.onglet.addTab(self.rsa, "RSA")


        principale = QVBoxLayout()
        principale.addWidget(self.onglet)
        self.setLayout(principale)

    ### FONCTION RSA
    def rsa_generer(self):
        a = 9999999999999999999999999999999999999999999999999999999999999999999999999999999
        b = 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
        clefPublic,clefPrivee = genererClefs(a,b)
        self.edit_rsa_public.setText(str(clefPublic[0]))
        self.edit_rsa_privee.setText(str(clefPrivee[0]))
        self.edit_rsa_module.setText(str(clefPublic[1]))

    def rsa_crypt(self):
        if((len(self.edit_rsa_public.text()) <= 0) and (len(self.edit_rsa_privee.text()) <= 0) and (len(self.edit_rsa_module.text()) <= 0)):
            self.rsa_generer()
        self.text_edit_rsa_crypt.setText(str(crypter(str(self.text_edit_rsa_decrypt.toPlainText()),\
                                                (int(self.edit_rsa_public.text()),int(self.edit_rsa_module.text())))))
            
    def rsa_decrypt(self):
        print (int(self.edit_rsa_privee.text()),int(self.edit_rsa_module.text()))
        if not((len(self.edit_rsa_public.text()) <= 0) and (len(self.edit_rsa_privee.text()) <= 0) and (len(self.edit_rsa_module.text()) <= 0)):
            self.text_edit_rsa_decrypt.setText(str(decrypter(int(self.text_edit_rsa_crypt.toPlainText()),\
                                                        (int(self.edit_rsa_privee.text()),\
                                                        int(self.edit_rsa_module.text()))\
                                                        )))



    #### FONCTION ELGAMAL
    def GenererElgamal(self):
        if((len(self.line_edit_tour.text()) > 0) and (int(self.line_edit_bits.text()) > 0)):
            print self.line_edit_bits.text().toInt()[0]
            
            self.el.setTailleCle(int(self.line_edit_bits.text().toInt()[0]))
            self.el.setTour(int(self.line_edit_tour.text()))            
            print "taille " , self.el.getTailleCle()
            self.el.generer()
            self.line_edit_premier.setText(str(self.el.p))
            self.line_edit_clePrive.setText(str(self.el.cle_prive))
            self.line_edit_clePublic.setText(str(self.el.cle_public))        
            self.line_edit_a.setText(str(self.el.a))
            self.line_edit_g.setText(str(self.el.g))

        else :
            self.label_error_elgamal.setText("Erreur : ajouter un nombre de bits et indiquer le nombre de tours ! ".decode("utf-8"))


    def CrypterElgamal(self):        
        if(len(self.text_edit_origine.toPlainText()) > 0 ):
            self.txt = QString(self.text_edit_origine.toPlainText())

            self.el.setTextOrigine(unicode(self.text_edit_origine.toPlainText()))
            self.el.crypter()
            self.text_edit_ascii.setText(self.el.text_ascii)
            self.text_edit_crypter.setText(self.el.text_crypter)
        else :
            self.label_error_elgamal.setText("Erreur : veuillez mettre un texte à crypter ".decode("utf-8"))

    def DecrypterElgamal(self):
        
        if(len(str(self.text_edit_crypter.toPlainText()))>0):
            self.el.text_origine = str(self.text_edit_crypter.toPlainText())
            self.el.decrypter()
            strId = QString(self.el.text_decrypter)
            self.text_edit_decrypter.setText(strId)

        else :
            self.label_error_elgamal.setText("Rien à decrypter".decode("utf-8"))

                

    #### FONCTION LARGONJEM
    def LargonjemCrypt(self):
        self.largonjem_instance.setText(str(self.text_edit_largonjem_normal.toPlainText()))
        self.largonjem_instance.crypter()
        self.text_edit_largonjem_crypter.setText(str(self.largonjem_instance.getTextCrypter()))
    

    #Algorithme de cryptage de cesar avec simple decalage ou clé
    def CesarCryptDecalage(self):
        self.cesar_instance.setText(str(self.text_edit_cesar_crypt.toPlainText()))
        self.cesar_instance.setDecalage(int(self.line_edit_cesar_decalage.text())) 
        self.cesar_instance.CrypterDecalage()
        self.text_edit_cesar_decrypt.setText(str(self.cesar_instance.getTextCrypter()))       
    
    def CesarCryptCle(self):
        self.cesar_instance.setText(str(self.text_edit_cesar_crypt.toPlainText()))
        self.cesar_instance.setCle(int(self.line_edit_cesar_cle.text()))
        self.cesar_instance.CrypterCle()
        self.text_edit_cesar_decrypt.setText(str(self.cesar_instance.getTextCrypter()))
        
    def CesarDecryptCle(self):
        self.cesar_instance.setTextDecrypter(str(self.text_edit_cesar_decrypt.toPlainText()))
        self.cesar_instance.setCle(int(self.line_edit_cesar_cle.text()))
        self.cesar_instance.DecrypterCle()
        self.text_edit_cesar_crypt.setText(str(self.cesar_instance.getText()))
        
    def CesarDecryptDecalage(self):
        self.cesar_instance.setTextDecrypter(str(self.text_edit_cesar_decrypt.toPlainText()))
        self.cesar_instance.setDecalage(int(self.line_edit_cesar_decalage.text()))
        self.cesar_instance.DecrypterDecalage()
        self.text_edit_cesar_crypt.setText(str(self.cesar_instance.getText()))
    
    
    ##### FONCTION ERATOSTHENE
    def GenererEratos(self):
        self.eratos_instance.setNombre(int(self.line_edit_eratos.text()))
        self.eratos_instance.Generer()                               
        self.text_edit_eratos.setText(str(self.eratos_instance.getListe()))       

    ###### FONCTION SHA
    def HascherSHA(self):
        text = self.text_edit_sha_message.toPlainText()       
        self.sha_instance = sha1()
        self.text_edit_sha_decrypter.setText(self.sha_instance.sha1(text))
예제 #16
0
	XA = rint(1, q - 1)
	YA = pow(alpha, XA, q)

	public_key_A = [q, alpha, YA]
	private_key_A = YA

	plaintext = str(q) + " " + str(alpha) + " " + str(YA)

	message = plaintext + '||' + HMAC.returnHMAC(key = secret_key_AB_HMAC, message = plaintext)

	c.send(str.encode(message))

	reply = c.recv(2048).decode()

	C1, C2, recv_mac = reply.split("||")

	computed_mac = HMAC.returnHMAC(key = secret_key_AB_HMAC, message = C1 + "||" + C2)

	if(computed_mac != recv_mac):
		print("MAC ERROR")

	decrypted_message = Elgamal.decrypt(q, XA, C1 + "||" + C2)

	print("I have received this message -",decrypted_message)




c.close()
s.close()
예제 #17
0
파일: final.py 프로젝트: LucasGrugru/crypto
    def __init__(self, parent=None):         # constructeur de l'objet
        QWidget.__init__(self, parent)
        self.onglet = QTabWidget()                                              #Consctructeur des onglets

        self.largonjem = QWidget()                                              #QWidget largonjem          //OPE
        self.cesar = QWidget()                                                  #QWidget Cesar              //OPE
        self.elgamal = QWidget()                                                #QWidget elgamal            //OPE
        self.eratos = QWidget()                                                 #QWidget eratos             //OPE
        self.divers = QWidget()                                                 #QWidget Chinois && Wilson  //OPE
        self.sha = QWidget()                                                    #QWidget sha                //OPE
        self.rsa = QWidget()                                                    #QWidget rsa                //OPE

        #rsa

        self.label_rsa_cle_public = QLabel(self.trUtf8("Clé public"))
        self.label_rsa_cle_prive = QLabel(self.trUtf8("Clé privée"))
        self.label_rsa_module = QLabel(self.trUtf8("Module"))

        self.edit_rsa_public = QLineEdit()
        self.edit_rsa_privee = QLineEdit()
        self.edit_rsa_module = QLineEdit()

        self.label_text_edit_rsa_decrypt = QLabel(self.trUtf8("Texte à crypter : "))
        self.label_text_edit_rsa_crypt = QLabel(self.trUtf8("Texte à décrypter : "))

        self.text_edit_rsa_decrypt = QTextEdit("abc")
        self.text_edit_rsa_crypt = QTextEdit()

        self.button_rsa_crypter = QPushButton("Crypter")
        self.button_rsa_decrypter = QPushButton("Decrypter")
        self.button_rsa_generer = QPushButton(self.trUtf8("Génerer"))

        layout_rsa_main = QGridLayout()

        layout_rsa_main.addWidget(self.label_rsa_cle_public, 0,0)
        layout_rsa_main.addWidget(self.label_rsa_cle_prive, 1,0)
        layout_rsa_main.addWidget(self.label_rsa_module, 2,0)

        layout_rsa_main.addWidget(self.edit_rsa_public, 0,1)
        layout_rsa_main.addWidget(self.edit_rsa_privee, 1, 1)
        layout_rsa_main.addWidget(self.edit_rsa_module, 2,1)
    
        layout_rsa_main.addWidget(self.label_text_edit_rsa_decrypt, 4,0)
        layout_rsa_main.addWidget(self.label_text_edit_rsa_crypt, 4,1)

        layout_rsa_main.addWidget(self.text_edit_rsa_decrypt, 5,0)
        layout_rsa_main.addWidget(self.text_edit_rsa_crypt, 5,1)

        layout_rsa_main.addWidget(self.button_rsa_crypter, 6,0)
        layout_rsa_main.addWidget(self.button_rsa_decrypter, 6,1)
        layout_rsa_main.addWidget(self.button_rsa_generer, 3,1)

        self.rsa.setLayout(layout_rsa_main)

        self.button_rsa_generer.connect(self.button_rsa_generer, SIGNAL("clicked(bool)"), self.rsa_generer)
        self.button_rsa_generer.connect(self.button_rsa_crypter, SIGNAL("clicked(bool)"), self.rsa_crypt)
        self.button_rsa_generer.connect(self.button_rsa_decrypter, SIGNAL("clicked(bool)"), self.rsa_decrypt)


        #Largonjem
        
        self.label_largonjem_normal = QLabel("Texte à crypter".decode("utf-8"))
        self.label_largonjem_crypter = QLabel("Texte crypté".decode("utf-8"))
        self.text_edit_largonjem_normal = QTextEdit("abc")
        self.text_edit_largonjem_crypter = QTextEdit()
        self.button_largonjem_crypt = QPushButton("Crypter")
        layout_largonjem_principal = QGridLayout()

        layout_largonjem_principal.addWidget(self.label_largonjem_normal, 0, 0)
        layout_largonjem_principal.addWidget(self.text_edit_largonjem_normal, 1, 0)
        
        layout_largonjem_principal.addWidget(self.label_largonjem_crypter, 0, 1)
        layout_largonjem_principal.addWidget(self.text_edit_largonjem_crypter, 1 , 1)
        layout_largonjem_principal.addWidget(self.button_largonjem_crypt)

        self.largonjem.setLayout(layout_largonjem_principal)
        self.button_largonjem_crypt.connect(self.button_largonjem_crypt, SIGNAL("clicked(bool)"), self.LargonjemCrypt)
        
        self.largonjem_instance = Largonjem()

        #Cesar
        self.cesar_instance = Cesar()
        
        self.label_cesar_decalage = QLabel("Decalage")
        self.label_cesar_cle = QLabel("Clé".decode("utf-8"))
        self.label_cesar_crypt = QLabel("Texte a crypter")
        self.label_cesar_decrypt = QLabel("Texte crypté".decode("utf-8"))

        self.text_edit_cesar_crypt = QTextEdit("abc")
        self.text_edit_cesar_decrypt = QTextEdit()
        
        self.line_edit_cesar_decalage = QLineEdit("9")
        self.line_edit_cesar_cle = QLineEdit("0")
        self.button_cesar_crypt = QPushButton("Crypter par décalage".decode("utf-8"))
        self.button_cesar_crypt_bis = QPushButton("Crypter par clé".decode("utf-8"))
        self.button_cesar_decrypt = QPushButton("Décrypter par décalage".decode("utf-8"))
        self.button_cesar_decrypt_bis = QPushButton("Décrypter par clé".decode("utf-8"))       
        
        layout_cesar_principal = QGridLayout()
        layout_cesar_principal.addWidget(self.label_cesar_decalage, 0, 0)
        layout_cesar_principal.addWidget(self.line_edit_cesar_decalage, 0, 1)
        layout_cesar_principal.addWidget(self.label_cesar_cle,1 , 0)
        layout_cesar_principal.addWidget(self.line_edit_cesar_cle, 1, 1)
        layout_cesar_principal.addWidget(self.label_cesar_crypt, 2, 0)
        layout_cesar_principal.addWidget(self.text_edit_cesar_crypt, 3, 0)
        layout_cesar_principal.addWidget(self.label_cesar_decrypt, 2, 1)
        layout_cesar_principal.addWidget(self.text_edit_cesar_decrypt, 3, 1)
        layout_cesar_principal.addWidget(self.button_cesar_crypt, 4, 0)
        layout_cesar_principal.addWidget(self.button_cesar_crypt_bis , 4 , 1)
        layout_cesar_principal.addWidget(self.button_cesar_decrypt, 5, 0)
        layout_cesar_principal.addWidget(self.button_cesar_decrypt_bis , 5 ,1)        
                
        self.cesar.setLayout(layout_cesar_principal)

        
        self.button_cesar_crypt.connect(self.button_cesar_crypt, SIGNAL("clicked(bool)"), self.CesarCryptDecalage)
        self.button_cesar_crypt_bis.connect(self.button_cesar_crypt_bis, SIGNAL("clicked(bool)"), self.CesarCryptCle)
        self.button_cesar_decrypt.connect(self.button_cesar_decrypt, SIGNAL("clicked(bool)"), self.CesarDecryptDecalage)
        self.button_cesar_decrypt_bis.connect(self.button_cesar_decrypt_bis, SIGNAL("clicked(bool)"), self.CesarDecryptCle)


        #ElGamal
        self.el = Elgamal()

        self.label_bits = QLabel("Taille de la cle : ")
        self.label_premier = QLabel("Nombre premier : ")
        self.label_tour = QLabel("Nombre de tours : ")
        self.label_clePrive = QLabel("Clée Privé : ".decode("utf-8"))
        self.label_clePublic = QLabel("Clée Public : ".decode("utf-8"))
        self.label_a = QLabel("Nombre Aleatoire a : ")
        self.label_g = QLabel("Nombre Aleatoire g : ")
        self.label_origine = QLabel("Texte à crypter".decode("utf-8"))
        self.label_ascii = QLabel("Texte en ASCII")
        self.label_crypter = QLabel("Texte crypter ")
        self.label_decrypter = QLabel("Texte décrypter".decode("utf-8"))
        self.label_error_elgamal = QLabel("")

        self.line_edit_bits = QLineEdit("32")
        self.line_edit_premier = QLineEdit()
        self.line_edit_tour = QLineEdit("20")
        self.line_edit_clePrive = QLineEdit()
        self.line_edit_clePublic = QLineEdit()        
        self.line_edit_a = QLineEdit()
        self.line_edit_g = QLineEdit()

        self.text_edit_origine = QTextEdit()
        self.text_edit_ascii = QTextEdit()
        self.text_edit_crypter = QTextEdit()    
        self.text_edit_decrypter = QTextEdit()

        self.bouton_crypter = QPushButton("Crypter")
        self.bouton_decrypter = QPushButton("Décrypter".decode("utf-8"))
        self.bouton_generer = QPushButton("Générer".decode("utf-8"))

        layout_elgamal_principal = QGridLayout()
        layout_elgamal_principal.addWidget(self.label_bits, 0, 0)
        layout_elgamal_principal.addWidget(self.line_edit_bits, 0, 1)
        layout_elgamal_principal.addWidget(self.label_tour, 1, 0)
        layout_elgamal_principal.addWidget(self.line_edit_tour, 1, 1)
        layout_elgamal_principal.addWidget(self.label_premier , 2, 0)
        layout_elgamal_principal.addWidget(self.line_edit_premier ,2, 1)
        layout_elgamal_principal.addWidget(self.label_clePublic, 3,0)
        layout_elgamal_principal.addWidget(self.line_edit_clePublic, 3, 1)
        layout_elgamal_principal.addWidget(self.label_clePrive, 4, 0)
        layout_elgamal_principal.addWidget(self.line_edit_clePrive, 4, 1)
        layout_elgamal_principal.addWidget(self.label_a, 0, 2)
        layout_elgamal_principal.addWidget(self.line_edit_a, 0, 3)
        layout_elgamal_principal.addWidget(self.label_g, 1, 2)
        layout_elgamal_principal.addWidget(self.line_edit_g, 1, 3)

        layout_elgamal_principal.addWidget(self.label_origine, 5, 0, 1, 2) 
        layout_elgamal_principal.addWidget(self.text_edit_origine, 6, 0, 1 , 2)
        layout_elgamal_principal.addWidget(self.label_ascii, 5, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.text_edit_ascii , 6 ,2, 1, 2)
        layout_elgamal_principal.addWidget(self.label_crypter , 7, 0, 1, 2)
        layout_elgamal_principal.addWidget(self.text_edit_crypter, 8, 0, 1, 2)
        layout_elgamal_principal.addWidget(self.label_decrypter, 7, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.text_edit_decrypter, 8, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.bouton_generer, 2 , 2, 1 , 2)
        layout_elgamal_principal.addWidget(self.bouton_crypter, 3, 2 ,1 ,2)
        layout_elgamal_principal.addWidget(self.bouton_decrypter , 4, 2, 1, 2)
        layout_elgamal_principal.addWidget(self.label_error_elgamal, 9, 0, 1, 4)

        self.bouton_generer.connect(self.bouton_generer, SIGNAL("clicked(bool)"), self.GenererElgamal)
        self.bouton_crypter.connect(self.bouton_crypter, SIGNAL("clicked(bool)"), self.CrypterElgamal)
        self.bouton_decrypter.connect(self.bouton_decrypter, SIGNAL("clicked(bool)"), self.DecrypterElgamal)

        self.elgamal.setLayout(layout_elgamal_principal)


        #Eratosthene
        self.eratos_instance = Eratosthene()
        
        self.label_eratos_nombre = QLabel("Maximum")
        self.line_edit_eratos = QLineEdit("10")
        self.text_edit_eratos = QTextEdit()
        self.button_eratos_genere = QPushButton("Générer".decode("utf-8"))
        layout_erastos_principal = QGridLayout()
        layout_erastos_principal.addWidget(self.label_eratos_nombre, 0, 0)
        layout_erastos_principal.addWidget(self.line_edit_eratos, 0, 1)
        layout_erastos_principal.addWidget(self.button_eratos_genere, 0, 2)
        layout_erastos_principal.addWidget(self.text_edit_eratos, 1, 0, 1, 2)              
        
        self.eratos.setLayout(layout_erastos_principal)
        
        self.button_eratos_genere.connect(self.button_eratos_genere, SIGNAL("clicked(bool)"), self.GenererEratos)


        #SHA1
        self.label_sha_message = QLabel("Message")
        self.label_sha_crypter = QLabel("Message Crypter")
        self.text_edit_sha_message = QTextEdit()
        self.text_edit_sha_decrypter = QTextEdit()
        self.button_sha_hascher = QPushButton("Hascher")
        

        layout_sha_principal = QGridLayout()
        layout_sha_principal.addWidget(self.label_sha_message, 0, 0)
        layout_sha_principal.addWidget(self.text_edit_sha_message, 1, 0)
        layout_sha_principal.addWidget(self.label_sha_crypter , 0, 1)
        layout_sha_principal.addWidget(self.text_edit_sha_decrypter, 1, 1)
        layout_sha_principal.addWidget(self.button_sha_hascher, 2, 0, 1, 2)

        self.button_sha_hascher.connect(self.button_sha_hascher, SIGNAL("clicked(bool)"), self.HascherSHA)

        self.sha.setLayout(layout_sha_principal)


        #Mise en place des QWidgets dans les onglets
        self.onglet.addTab(self.largonjem, "Largonjem")
        self.onglet.addTab(self.cesar, "Cesar")
        self.onglet.addTab(self.elgamal, "ElGamal")
        self.onglet.addTab(self.eratos, "Eratosthene")
        self.onglet.addTab(self.sha, "SHA1")
        self.onglet.addTab(self.rsa, "RSA")


        principale = QVBoxLayout()
        principale.addWidget(self.onglet)
        self.setLayout(principale)
예제 #18
0
import socket
import HMAC
import Elgamal
from random import randint as rint

# FILE NOT USEFUL, MADE FOR TESTING

port = 5000

q = Elgamal.q
alpha = Elgamal.alpha

XA = rint(1, q - 1)
YA = pow(alpha, XA, q)

public_key_A = [q, alpha, YA]
private_key_A = YA

s = socket.socket()
s.connect(('127.0.0.1', port))
plaintext = str(q) + " " + str(alpha) + " " + str(YA)
message = plaintext
s.send(str.encode(message))

encrypted_message = s.recv(1024).decode()
decrypted_message = Elgamal.decrypt(q, XA, encrypted_message)

print("I GOT THIS MESSAGE :", decrypted_message)

s.close()
예제 #19
0
import Elgamal
from random import randint as rint

# FILE NOT USEFUL, MADE FOR TESTING

port = 5000


q = Elgamal.q
alpha = Elgamal.alpha
public_key_A = []
random_int = rint(1, q)

message_to_sent = '-__-, HEY, HELLO'

print("I AM SENDING THIS MESSAGE :", message_to_sent)

s = socket.socket()
s.bind(('', port))
s.listen() 
c, addr = s.accept()     
message = c.recv(1024)
message = message.decode()
public_key_A = list(map(int, message.split(" ")))

K = pow(public_key_A[2], random_int, q)
encrypted_message = Elgamal.encrypt(q, alpha, random_int, K, message_to_sent)
print(encrypted_message)
c.send(str.encode(encrypted_message))
s.close()