def cesar(message, cle):
"""
Décale tous les (codes de) caractères de message de la valeur cle ;
message est supposé ne contenir que des lettres (non accentuées) minuscules
"""
code = '' ord_a = ord('a')
for c in message:
offset_c = ord(c) - ord_a offset_d = (offset_c + cle)%26 d = chr(offset_d + ord_a)
code = code + d
return code
def vigenere(message, cle):
"""
Les paramètres message et cle sont des chaînes de caractères ne comportant
que des lettres non accentuées (ascii) minuscules. Décale chaque (code de)
caractère de message du rang du caractère correspondant dans cle
"""
code = ''
len_cle = len(cle)
for i in range(len(message)):
m = message[i] c = cle[i%len_cle] offset_c = ord(c) - ord('a') d = cesar(m, offset_c)
code += d
return code