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)
示例#2
0
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
示例#4
0
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)
示例#5
0
    ["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