Chiffrement symétrique

def chiffrement_symetrique(message : str, cle : str) -> str:
    """ Chiffrement/Déchiffremebt symétrique de 'message' avec 'cle' en
    utilisant l'opérateur booléen 'xor'

    Pré-conditions :
        >>> 'message' : chaîne de caractères non vide à chiffrer/déchiffrer
        >>> 'cle' : chaîne de caractères non vide utilisée comme clé

    Post-condition :
        >>> renvoie une chaîne de caractères correspondant à 'message' chiffré
        ou déchiffré """

    # contrôle des pré-conditions
    if type(message) != str or type(cle) != str or message == "" or cle == "":
        return ""

    message_chiffre, lm, lc,idc = "", len(message), len(cle), 0
    for index in range(lm) :
        message_chiffre += chr(ord(message[index]) ^ ord(cle[idc]))
        idc +=1
        if idc == lc :
            idc = 0
    return message_chiffre

if __name__ == '__main__':
    message = "Numérique et Sciences Informmatiques en Terminale"
    cle = "Xd7c-k?l5oP§qsaz3(4%"
    assert chiffrement_symetrique(message, cle) == '\x16\x11Z\x8a_\x02N\x19PO5ÓQ \x02\x13VFW@+D~\rK\x04M\x01X\x0e$Î\x00\x06\x04\t\x13MZ\x05\x0c\x01E\x0eD\x05^\x00P'
    message = '\x16\x11Z\x8a_\x02N\x19PO5ÓQ \x02\x13VFW@+D~\rK\x04M\x01X\x0e$Î\x00\x06\x04\t\x13MZ\x05\x0c\x01E\x0eD\x05^\x00P'
    assert chiffrement_symetrique(message, cle) == 'Numérique et Sciences Informmatiques en Terminale'

Téléchargement d’un fichier : fonction écrite en langage Python

Auto-évaluation

Évaluez votre degré de réussite. Comparez votre réponse avec la proposition ci-dessus.

1 – Indiquez la durée mise pour réaliser le travail demandé :
Moins de 15 minutes
Entre 15 minutes et 30 minutes
Plus de 30 minutes

2 – Indiquez les conditions de réalisation :
Sans aide (documentation, tutoriel, forum…)
Avec aide :
>>> documentation
>>> tutoriel
>>> forum

3 – indiquez votre degré de réussite du travail demandé :
entre 75 et 100 %
entre 50 et 75 %
entre 25 et 50%
moins de 25 %