Пример #1
0
def main():
    # Codifica un text entrat per teclat.
    # Si el text entrat per teclat és buit codifica el text de l'enunciat de la pràctica
    # La codificació és amb els mètodes : Cesar, PolyBios i RailFence.
    # En el cas de RailFence també desordena els espais ja que és un mètode de transformació i ho pot fer.

    print("Entra el text que vols codificar i descodificar,")
    print("Si apretes INTRO fara automaticament el de l'apartat d. ")
    text = input("text : ")
    if text == "":
        text = "it's the honky tonk women that gimme, gimme, gimme the honky tonk blues (honky tonk women, by the rolling stones)"

    cesar = Cesar.codificaText(text, 17)
    print("Amb el metode Cesar : ")
    print(cesar)

    print()
    print("------------------------------------")

    print("Amb el metode PolyBios : ")
    polybios = PolyBios.codificaText(text, 5, 5)
    print(polybios)

    print()
    print("------------------------------------")

    # En aquest cas el text no concordarà del tot àmb una possible solució teva ja que també es codifiquen TOTS els caràcters!!
    print("Amb el metode RailFence : ")
    railFence = RailFence.codifica(text, 7)
    print(railFence)

    print()
    print("------------------------------------")
Пример #2
0
def CasseCesar(phraseCodee): # def cesar ...
    alphabet4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[]^_`{|}~ ¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœ÷øùúûüýþÿ\n\r\t\\"
    alphabet = ['T','R','O','I','S','È','M','E',' ','P','A','\n','B','o','r','d','i','n','—','L','e','s','F','a','ç','à','c','u','É','p','l','g','1','8','2','0','C','H','5','t','m','b','h','v',';','6',',','f','é','’','7','!','q','-','?','x','.','ê','û','N','K','z','w','y','è','J',':','À','V','k','ô','j','ù','D','Q','«','»','°','3','ï','4','â','î','U','œ','…','G','Z','(',')','Ê','Y','W','X','ü','[',']','9','Ç','ë','Ô','=','\'']
    frequence = [0.041009917529270565,0.04015107108886699,0.03564212727674824,0.08513315340500408,0.06484290625046968,0.00010735580505044649,0.10069974513731882,0.07547113095046389,16.758241168374695,0.11959436682619738,0.06537968527572191,0.5444012874108142,0.04058049430906877,4.091973865302818,5.124629354083064,2.7118076355742784,5.802903330391784,5.441543690591981,0.07879916090702772,0.12549893610397195,11.177671710242388,6.133344498337059,0.03059640443937725,6.355463658986432,0.08298603730399515,0.44316476324824317,2.298917209350261,4.654840351182309,0.0049383670323205385,2.058440206037261,4.305611917353207,0.6575543059339848,0.012667984995952687,0.005045722837370985,0.007514906353531255,0.01341947563130581,0.07192838938379915,0.006441348303026789,0.0032206741515133945,5.872147824649322,2.029776206088792,0.6368346355592486,0.6597014220349937,1.2835460051831382,0.09372161780903979,0.002683895126261162,1.5511840271739015,0.8002301708460282,1.5334703193405776,1.0833274287640555,0.0024691835161602693,0.13419475631305813,0.849506485364183,0.24605950517562336,0.09619080132520005,0.30671553502912563,0.5177770477583035,0.17284284613121884,0.025980104822208052,0.0814830560332889,0.037789243377757166,0.10434984250903401,0.07031805230804246,0.1870138123978778,0.22405156514028182,0.028986067363620555,0.07579319836561522,0.01664014978281921,0.04455265909593529,0.04358645685048128,0.05303376769492057,0.2676380219907631,0.03027433702422591,0.06548704108077236,0.03435385761614288,0.11927229941104606,0.11454864398882642,0.0012882696606053578,0.004508943812118752,0.02114909359493796,0.0020397602959584833,0.03939958045351386,0.03231409732018439,0.018143131053525458,0.020934381984837064,0.0946878200544938,0.00858846440403572,0.00021471161010089298,0.00429423220201786,0.00429423220201786,0.0005367790252522325,0.005475146057572771,0.0025765393212107157,0.0122385617757509,0.0006441348303026789,0.0044015880070683066,0.0044015880070683066,0.0017176928808071438,0.0006441348303026789,0.001073558050504465,0.00010735580505044649,0.00010735580505044649,0.00010735580505044649]
        
    tableau = []
    compte = []
    x = 0
    for lettre in phraseCodee:
        try:
            position = tableau.index(lettre)
            compte[position] = compte[position] +1
        except :
            tableau.append(lettre) # .append = Ajoute un tableau
            compte.append(1)
        x+= 1
    
    frequencePhraseCodee = []
    for i in range(0,len(compte)):
        frequencePhraseCodee.append(compte[i] / len(phraseCodee))
    
    lettreMaxRef = frequence.index(max(frequence))
    lettreMaxPhraseCodee = frequencePhraseCodee.index(max(frequencePhraseCodee))
    
    caractereMaxRef = alphabet[lettreMaxRef]
    caractereMaxPhraseCodee = tableau[lettreMaxPhraseCodee]
    
    caractereRefApparaitLePlus = alphabet4.index(caractereMaxRef)
    caracterePhraseCodeeApparaitLePlus = alphabet4.index(caractereMaxPhraseCodee)
    
    decalage = caractereRefApparaitLePlus - caracterePhraseCodeeApparaitLePlus
        
    return decalage, Cesar.cesar(phraseCodee, decalage, 4)
Пример #3
0
def _():
    message = "This text is a sample to be encode and decode with various encryption methods."
    cesar = Cesar(3)  # Offset = 3
    vigenere = Vigenere("password")  # Key = password
    rot13 = ROT13()
    vernam = Vernam(len(message))  # RandomKey length = length of message
    rsa = RSA(33967, 917227)  # p et q prime number

    @it('should test the constructor of Cesar encryption module')
    def testConstructorOfCesarModule():
        assert cesar.offset == 3

    @it('should test the constructor of Vigenere encryption module')
    def testConstructorOfVigenereModule():
        assert vigenere.key == "password"

    @it('should test the constructor of ROT13 encryption module')
    def testConstructorOfROT13Module():
        assert rot13.rotation == 13

    @it('should test the constructor of Vernam encryption module')
    def testConstructorOfVernamModule():
        assert len(vernam.key) == len(message)

    @it('should test the constructor of RSA encryption module')
    def testConstructorOfRSAModule():
        assert rsa.p == 33967
        assert rsa.q == 917227

    @it('should test the Cesar encryption method')
    def testCesarEncryptionMethod():
        encoded = cesar.encrypt(message)
        decoded = cesar.decrypt(encoded)
        assert decoded == message

    @it('should test the Vigenere encryption method')
    def testVigenereEncryptionMethod():
        encoded = vigenere.encrypt(message)
        decoded = vigenere.decrypt(encoded)
        assert decoded == message

    @it('should test the ROT13 encryption method')
    def testROT13EncryptionMethod():
        encoded = rot13.encrypt(message)
        decoded = rot13.decrypt(encoded)
        assert decoded == message

    @it('should test the Vernam encryption method')
    def testVernamEncryptionMethod():
        encoded = vernam.encrypt(message)
        decoded = vernam.decrypt(encoded)
        assert decoded == message

    @it('should test the RSA encryption method')
    def testRSAEncryptionMethod():
        encoded = rsa.encrypt(message)
        decoded = rsa.decrypt(encoded)
        assert decoded == message
def tryCesarCompare(nomeEntrada, nomeSaida):
    inputFile = Util.scanFile(nomeEntrada)
    outputFile = Util.scanFile(nomeSaida)

    key = (ord(outputFile[0]) - ord(inputFile[0])) % 256
    retornoCesar = Cesar.criptCompare(inputFile, outputFile, key)
    if retornoCesar:
        print("Algoritmo: Cifra de Cesar2\nChave: " + str(key))
        return True
    return False
def tryCesar(nomeEntrada, nomeSaida):
    inputFile = Util.scanFile(nomeEntrada)
    outputFile = Util.scanFile(nomeSaida)

    key = (ord(outputFile[0]) - ord(inputFile[0])) % 256
    retornoCesar = Cesar.cript(nomeEntrada, key)
    # if filecmp.cmp(nomeSaida, "./saidaCriptCesar.txt"):
    if retornoCesar == outputFile:
        print("Algoritmo: Cifra de Cesar\nChave: " + str(key))
        return True
    return False
Пример #6
0
    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)
Пример #7
0
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))
Пример #8
0
import Cesar, RailFence
import hashlib
from Main_Encriptacion import HashTextoPlano, TextoPlano, N_Cesar, NivelesRailFence  #Se exporta el hash del texto plano y los niveles de Cesar y RailFence

TextoDescrifrar = open(
    'mensajeseguro.txt',
    'r+')  #Txt que contiene el texto encriptado por 2 cifrados de sustitución
TextoEncriptado = TextoDescrifrar.readlines()[0]
TextoDescrifrar.close()

DescifrarRailFence = RailFence.Desencriptar(
    TextoEncriptado, NivelesRailFence)  #Descrifrado por RailFence

DescifradoCesar = Cesar.Rot(-N_Cesar)(
    DescifrarRailFence)  #Descifrado por Cesar

#Metodo para Hashear el texto descrifrado
HashTextoDescifrado = hashlib.md5()
textoAHashear = DescifradoCesar
HashTextoDescifrado.update(textoAHashear.encode())
HashTextoDescencriptado = HashTextoDescifrado.hexdigest()

#Validador si el hash del texto plano es el mismo que el texto descrifrado
print("=================================================")
if HashTextoPlano == HashTextoDescencriptado:

    print("El mensaje no ha sido modificado")
else:
    print("El mensaje ha sido adulterado")
print("=================================================")
print("Mensaje Original:", TextoPlano)
Пример #9
0
import Util
import Cesar
import Vigenere
import Transposicao
import Substituicao
import QuebrarCifras
import AtaqueDicionario

fileName = "./entrada.txt"

option = Util.menuAlgoritmo()

while option != 0:
    if option == 1:
        Cesar.start(fileName)
    elif option == 2:
        Transposicao.start(fileName)
    elif option == 3:
        Vigenere.start(fileName)
    elif option == 4:
        Substituicao.start(fileName)
    elif option == 5:
        nomeArquivo = Util.scan("Arquivo: ")
        QuebrarCifras.quebrarCifra(nomeArquivo)
    elif option == 6:
        nomeArquivo = Util.scan("Arquivo: ")
        AtaqueDicionario.startAttack(nomeArquivo)

    option = Util.menuAlgoritmo()
Пример #10
0
import Cesar, RailFence
import hashlib

TextoACifrar = open('mensajedeentrada.txt',
                    'r')  #Txt que contiene el texto plano
TextoPlano = TextoACifrar.readlines()[0]  #Extrae el texto plano del archivo
TextoACifrar.close()

#Aplicación del Hash md5 al texto plano
TextoHash = hashlib.md5()
textoAHashear = TextoPlano
TextoHash.update(textoAHashear.encode())
HashTextoPlano = TextoHash.hexdigest()

N_Cesar = 5  #Nro de veces de Cesar
NivelesRailFence = 3  #Nro de bajas en Rail Fence

TextoCesar = Cesar.Rot(N_Cesar)(TextoPlano)  #Texto cifrado con Cesar

TextoRailFence = RailFence.Encriptar(
    TextoCesar, NivelesRailFence)  #Texto cifrado por RailFence

archivoHashear = open('mensajeseguro.txt', 'w')
archivoHashear.write(TextoRailFence)
archivoHashear.close()

print("=================================================")
print("Mensaje Original:", TextoPlano)
print("Mensaje Encriptado:", TextoRailFence)
Пример #11
0
"""
Desafio:
Se le solicita a usted crear un programa el cual tenga como objetivo poder enviar un mensaje seguro
asegurando la integridad de este sin que este sea modificado, para esto se le pide a su equipo que
construya en el lenguaje que desee un programa que sea capas de cifrar ocupando cualquier red de
sustitucion que usted defina y generar un hash de un archivo de texto llamado mensajedeentrada.txt
generando un nuevo archivo llamado mensajeseguro.txt en el cual posteriormente puedan con un segundo
programa generar la operacion a la inversa, generando el mismo mensaje original con el adicional de
poder detectar si el mensaje ha sido modificado o no.
"""

Texto = "Hola Mundo ñoño"
Nivel_RF = 2

#Encriptado y desencriptado Cesar
Cesar_Encrypt = Cesar.Rot(3)(Texto)
print(Cesar_Encrypt)
print(Cesar.Rot(-3)(Cesar_Encrypt))

#Encriptado y desencriptado Rail Fence
RF_Encrypt = RailFence.Encriptar(Texto, Nivel_RF)
print(RF_Encrypt)
print(RailFence.Desencriptar(RF_Encrypt, Nivel_RF))

###############################################################

hashmd5 = hashlib.md5()
stexto = "hola Altaruru, hoy es lunes 1 de Octubre de 2018"
hashmd5.update(stexto.encode())
print(hashmd5.hexdigest())