def largonjem(message): """ Ajoute 'L' devant chaque consonne Ajoute 'EM' après chaque consonne """ tab_message = stringToCharTab(message) tab_message.reverse() consonne = tab_message.pop() tab_message.append("L") tab_message.reverse() tab_message.append(consonne + "EM") return charTabtoString(tab_message)
def transposition_fixe(decal): """Chiffrement par transposition selon le tp""" tabChar = stringToCharTab(phrase) tabNewChar = [] # Nouvelle phrase # Donner la bonne taille au tableau for k in range(len(tabChar)): tabNewChar.append("A") for i in range(len(tabChar)): num = i + 5 if num >= len(tabChar): num -= len(tabChar) tabNewChar[num] = tabChar[i] return charTabtoString(tabNewChar)
def codeCesar(phrase, key): """ Code de césar :param phrase: :param key: :return: """ tab = stringToCharTab(phrase) crypted = "" for car in tab: if car in ALPHABET: num = ALPHABET.index(car) num += key if num >= len(ALPHABET): num -= len(ALPHABET) crypted += ALPHABET[num] else: crypted += car return crypted
def transposition_random(): """chiffrement par transposition""" tabNewPosition = [] # Enregistre la nouvelle position de la lettre pour ne pas mettre une nouvelle lettre là où il y en a déjà tabChar = stringToCharTab(phrase) # Phrase transformé en tableau de caractères tabNewChar = [] # Nouvelle phrase # Donner la bonne taille au tableau for k in range(len(tabChar)): tabNewChar.append("A") i = 0 # Transposer tous les caractères du tableau while i < len(tabChar): j = random.randint(0, len(tabChar) - 1) # La nouvelle position de la lettre doit être là où il n' y pas de nouvelle lettre if j in tabNewPosition: while j in tabNewPosition: j = random.randint(0, len(tabChar) - 1) else: # Changement de position tabNewChar[i] = tabChar[j] tabNewPosition.append(j) i += 1 return charTabtoString(tabNewChar)
["STUVWXYZABCDEFGHIJKLMNOPQR"], ["TUVWXYZABCDEFGHIJKLMNOPQRS"], ["UVWXYZABCDEFGHIJKLMNOPQRST"], ["VWXYZABCDEFGHIJKLMNOPQRSTU"], ["WXYZABCDEFGHIJKLMNOPQRSTUV"], ["XYZABCDEFGHIJKLMNOPQRSTUVW"], ["YZABCDEFGHIJKLMNOPQRSTUVWX"], ["ZABCDEFGHIJKLMNOPQRSTUVWXY"] ] if __name__ == '__main__': messageACrypter = input("Indiquer le message que vous voulez crypter : ") messagecrypter = "" tabMessageACrypter = stringToCharTab(messageACrypter) noAlphabet = 1 # On crée une liste de liste selon le carre de vigenère for i in range(len(CARRE_VIGENERE)): CARRE_VIGENERE[i] = stringToCharTab(CARRE_VIGENERE[i][0]) # Transformation for i in range(len(tabMessageACrypter)): for j in range(len(CARRE_VIGENERE[0])): print(j) if tabMessageACrypter[i] == CARRE_VIGENERE[0][j]: messagecrypter += CARRE_VIGENERE[noAlphabet][j] # On remet à 0 pour ne pas sortir du tableau if noAlphabet + 1 >= 26: noAlphabet = 0