L'algorithme ROT13 décale chaque lettre de 13 positions dans l'alphabet. Comme l'alphabet a 26 lettres, appliquer ROT13 deux fois revient au message original.
### Solution
```python
def chiffrement_rot13_mot(mot):
"""
Chiffre un mot avec l'algorithme ROT13.
:param mot: (str) Le mot à chiffrer (en minuscules)
:return: (str) Le mot chiffré
"""
resultat = ""
for lettre in mot.lower():
if 'a' <= lettre <= 'z':
# Calculer la nouvelle position
code = ord(lettre) - ord('a') # Position 0-25
nouveau_code = (code + 13) % 26 # Décalage de 13
nouvelle_lettre = chr(nouveau_code + ord('a'))
resultat += nouvelle_lettre
else:
# Garder les caractères non alphabétiques
resultat += lettre
return resultat
def chiffrement_rot13(message):
"""
Chiffre un message complet avec l'algorithme ROT13.
:param message: (str) Le message à chiffrer
:return: (str) Le message chiffré
"""
mots = message.split()
mots_chiffres = [chiffrement_rot13_mot(mot) for mot in mots]
>>> cesar("bonjour", 3) # Décalage de 3 (César classique)
'erqmrxu'
>>> decesar("erqmrxu", 3)
'bonjour'
>>> cesar("bonjour", 13) # ROT13
'obawbhe'
```
---
Auteur : Florian Mathieu
Licence CC BY NC
<arel="license"href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><imgalt="Licence Creative Commons"style="border-width:0"src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"/></a><br/>Ce cours est mis à disposition selon les termes de la <arel="license"href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International</a>.